当前位置: 首页 > news >正文

大连市营商环境建设局门户网站银座网上购物商城

大连市营商环境建设局门户网站,银座网上购物商城,河南平台网站建设哪里有,免备案虚拟主机哪家强题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开…

题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

题解

根据栈后进先出的性质,可将两个栈分别设置为只压入元素的栈和只弹出元素的栈,以此来满足队列先进先出的性质。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <errno.h>
#include <stdbool.h>typedef int STDataType;
typedef struct Stack
{STDataType* a;int top;int capacity;
}ST;void STInit(ST* pst);
void STDestroy(ST* pst);
void STPush(ST* pst, STDataType x);
void STPop(ST* pst);
STDataType STTop(ST* pst);
bool STEmpty(ST* pst);
int STSize(ST* pst);void STInit(ST* pst)
{assert(pst);pst->a = NULL;pst->top = 0; //指向栈顶元素的下一个位置pst->capacity = 0;
}void STDestroy(ST* pst)
{assert(pst);free(pst->a);pst->a = NULL;pst->top = 0;pst->capacity = 0;
}void STPush(ST* pst, STDataType x)
{if (pst->top == pst->capacity){int newcapacity = pst->capacity == 0 ? 4 : pst->capacity * 2;STDataType* tmp = (STDataType*)realloc(pst->a, newcapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail");return;}pst->a = tmp;pst->capacity = newcapacity;}pst->a[pst->top] = x;pst->top++;
}void STPop(ST* pst)
{assert(pst);assert(!STEmpty(pst));pst->top--;
}STDataType STTop(ST* pst)
{assert(pst);assert(!STEmpty(pst));return pst->a[pst->top - 1];
}bool STEmpty(ST* pst)
{assert(pst);return pst->top == 0;
}int STSize(ST* pst)
{assert(pst);return pst->top;
}typedef struct {ST pushst;ST popst;
} MyQueue;MyQueue* myQueueCreate() {MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));STInit(&obj->pushst);STInit(&obj->popst);return obj;
}void myQueuePush(MyQueue* obj, int x) {STPush(&obj->pushst,x);
}int myQueuePeek(MyQueue* obj) {if(STEmpty(&obj->popst)){while(!STEmpty(&obj->pushst)){STPush(&obj->popst,STTop(&obj->pushst));STPop(&obj->pushst);}}return STTop(&obj->popst);
}int myQueuePop(MyQueue* obj) {int front =  myQueuePeek(obj);STPop(&obj->popst);return front;
}bool myQueueEmpty(MyQueue* obj) {return STEmpty(&obj->pushst) && STEmpty(&obj->popst);
}void myQueueFree(MyQueue* obj) {STDestroy(&obj->pushst);STDestroy(&obj->popst);free(obj);
}

http://www.yayakq.cn/news/821089/

相关文章:

  • 福州企业建站系统模板做视频图片博客网站有哪些
  • 网站推广多少钱怎么查看网站dns
  • 手机网站怎么备案响应式自适应网站模板
  • 做淘宝客网站性质php网站源代码
  • 高端网站开发案例展示常州天宁区做网站公司
  • 公司网站忘了怎么做网络营销推广岗位有哪些
  • 新乡平原新区建设局网站网站建设的误区
  • 网站建设客户说没用北京网站设计策划公司
  • 网站优化如何做pc指数设计师用的素材网站有哪些
  • 骨科医院网站优化服务商jsp怎么做购物网站
  • 国内家居行业网站开发尚海整装总店地址
  • 律师做网站有用行业门户网站有哪些
  • pc网站同步手机网站壹像素网站
  • 做网站免费建设网站公司那家好
  • 做分析图用的地图网站公司官网制作百度
  • 上海网站建设领导品牌神宜建设公司官网
  • 网站开发外键手机端网页设计软件
  • 电商网站开发平台哪个好体育彩票网站开发方案
  • 广州网站开发企业民营医院建设网站
  • 怎样做带音乐的表白网站危机公关处理
  • mvc做的游戏网站代码电子书网站用dz还是wordpress
  • 网站卖链接网站开发工具的功能包括
  • 南海大良网站建设做360网站优化快速
  • 潍坊网站公司网络科技大同网站建设制作
  • 临沂网站设计公司做旅游网站需要引进哪些技术人才
  • 网站开发维护多少钱广州网站建设流程
  • 惠东做网站河北省城乡和建设厅网站首页
  • 具体c2c网站建设实例最火的网络销售平台
  • 网站建设制作一个网站的费用互联网营销推广公司
  • 如何做搜索引擎网站广东省住房和城乡建设厅证件查询