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

云商城24小时自助下单阳城seo排名

云商城24小时自助下单,阳城seo排名,小微企业利润大于300万,wordpress固定链力扣232 用栈实现队列 题目描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并…

力扣232 用栈实现队列

题目描述

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

实现 MyQueue 类:

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

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

思路分析

针对队列的四个功能,我们逐一讲解并进行实现

1.void push(int x) 将元素 x 推到队列的末尾:关于进队,没有具体的返回值,对于系统如何进行存储也没有过多要求,我们就定义一个pushst(用来进队元素的栈),将元素直接push即可。

2.int pop() 从队列的开头移除并返回元素:这里就有讲究了,出栈是将最后进入的元素返回,但出队却是将最先进入的元素返回,但又不能取到栈底元素,所以我们需要再定义一个栈来进行出队用,定义为popst,出队的时候,只需要将pushst里的元素全部出栈,进栈到popst中,再返回popst栈顶元素自然就是需要出队的元素了。

3.int peek() 返回队列开头的元素:此功能与上面的思路完全一样的,但先实现此功能对于上面的出队功能会非常方便,稍后在代码里会进行讲解。

4.boolean empty() 如果队列为空,返回 true ;否则,返回 false: 直接判断两个栈同时为空即可。

完整代码

typedef int STDataType;typedef struct Stack
{STDataType* a;int _top;int _capacity;
}Stack;// 初始化栈
void StackInit(Stack* ps);
// 入栈
void StackPush(Stack* ps, STDataType data);
// 出栈
void StackPop(Stack* ps);
// 获取栈顶元素
STDataType StackTop(Stack* ps);
// 获取栈中有效元素个数
int StackSize(Stack* ps);
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0
int StackEmpty(Stack* ps);
// 销毁栈
void StackDestroy(Stack* ps);// 初始化栈
void StackInit(Stack* ps)
{assert(ps);ps->a = NULL;ps->_capacity = 0;ps->_top = 0;
}// 入栈
void StackPush(Stack* ps, STDataType data)
{assert(ps);//检查是否栈满if (ps->_top == ps->_capacity){int newcapacity = ps->_capacity == 0 ? 4 : ps->_capacity * 2;Stack* ptr = realloc(ps->a, sizeof(STDataType) * newcapacity);if (ptr == NULL){perror("realloc fail");return;}ps->a = ptr;ps->_capacity = newcapacity;}//入栈ps->a[ps->_top] = data;ps->_top++;
}// 出栈
void StackPop(Stack* ps)
{assert(ps);assert(ps->_top > 0);ps->_top--;
}// 获取栈顶元素
STDataType StackTop(Stack* ps)
{assert(ps);assert(ps->_top > 0);return ps->a[ps->_top-1];
}// 获取栈中有效元素个数
int StackSize(Stack* ps)
{assert(ps);return ps->_top;
}
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0
int StackEmpty(Stack* ps)
{assert(ps);if (ps->_top == 0){return 1;}else{return 0;}
}// 销毁栈
void StackDestroy(Stack* ps)
{assert(ps);free(ps->a);ps->_capacity = 0;ps->_top = 0;
}//实现区typedef struct {Stack popst;Stack pushst;} MyQueue;MyQueue* myQueueCreate() {MyQueue* obj=(MyQueue*)malloc(sizeof(MyQueue));StackInit(&obj->popst);StackInit(&obj->pushst);return obj;
}
void myQueuePush(MyQueue* obj, int x) {StackPush(&obj->pushst,x);}int myQueuePop(MyQueue* obj) {int Top=myQueuePeek(obj);//将peek的元素放到top里面StackPop(&obj->popst);return Top;
}int myQueuePeek(MyQueue* obj) {if(StackEmpty(&obj->popst))//只要popst为空,将pushst的数据放到popst中(要考虑到push和pop同时有数据的情况){while(!StackEmpty(&obj->pushst)){StackPush(&obj->popst,StackTop(&obj->pushst));StackPop(&obj->pushst); }  }return StackTop(&obj->popst);//返回pop栈顶元素
}bool myQueueEmpty(MyQueue* obj) {return StackEmpty(&obj->pushst)&&StackEmpty(&obj->popst);
}void myQueueFree(MyQueue* obj) {StackDestroy(&obj->popst);StackDestroy(&obj->pushst);free(obj); 
}/*** Your MyQueue struct will be instantiated and called as such:* MyQueue* obj = myQueueCreate();* myQueuePush(obj, x);* int param_2 = myQueuePop(obj);* int param_3 = myQueuePeek(obj);* bool param_4 = myQueueEmpty(obj);* myQueueFree(obj);
*/

http://www.mmbaike.com/news/22598.html

相关文章:

  • 建个网站多少费用网络服务包括
  • 招聘网站建设方案模板整站优化和关键词优化的区别
  • 荥阳网站建设网站seo优化徐州百度网络
  • wordpress nginx 502seo工作内容和薪资
  • 建网站logo怎么做微友圈推广平台怎么加入
  • 做网站用vs网络营销的表现形式有哪些
  • wordpress用户中心api专业seo关键词优化
  • 网站建设全包广州3322免费域名注册
  • 上海哪些做网站网站优化推广方案
  • 网站 例seo效果分析
  • 怎样做网站操作向导福州seo代理商
  • wordpress 视频站主题百度识图网站
  • 怎么样增加网站权重西安seo按天收费
  • 中山专业网站建设价格重庆可靠的关键词优化研发
  • 免费自助设计网站平台推广引流
  • 微分销系统一般多少钱超级seo外链工具
  • 做ps赚钱网站有哪些线上职业技能培训平台
  • 网站建设www.com北京正规seo搜索引擎优化价格
  • ERP开发 网站开发google搜索
  • 视屏网站开发者工具无视频文件网站优化策略分析
  • 怎样做网站后台深圳有实力的seo公司
  • 时时彩游戏网站建设南京seo外包平台
  • wordpress建站云盘放心网站推广优化咨询
  • 婚礼策划网站模板福建键seo排名
  • 做网站客户尾款老不给怎么办丽水网站seo
  • 渭南网站建设网站建设邀请推广app
  • 呼市网站制作招聘营销培训总结
  • 企业形象网站怎么做上海网站快速优化排名
  • 哈尔滨企业网站建设公司企业关键词大全
  • 十堰网站建设价格上海seo网络优化