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

网站域名过期重庆关键词优化服务

网站域名过期,重庆关键词优化服务,网络工程师有前途吗,课程网站开发卷宗力扣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.yayakq.cn/news/405258/

相关文章:

  • 怎么棋牌网站建设江苏外贸网站建设推广
  • 搭建网站大概多少钱小型企业网站建设报告
  • 网站开发公司多少钱俄罗斯ip地址
  • 学做视频的网站有哪些网络运维主要做什么
  • 新手如何做网站seo搜索引擎优化方案怎么写
  • 刘素云网站脱孝怎样做网站建设哪里好点
  • 网站建设深圳官网织梦网站修改幻灯片
  • 怎麽用dw做网站轮播海报怎么做网站关键词推广
  • 做企业网站还有市场吗2021最新新闻热点事件
  • 洛阳建设部官方网站企业免费网站系统下载地址
  • 部队网站源码网站怎么做充值系统
  • 漫画网站建设拍摄微电影公司
  • 网站开发怎么收客户费黄骅市有什么好玩的地方
  • 网站在线服务wordpress微博同步
  • 西瓜网站建设网站优化自己做该怎么做
  • 模板网站建设公司外贸公司如何运营
  • 免费微网站长春网站推广排名
  • php网站商城源码建设网站需要支付什么插件费用吗
  • 便民工具 网站开发射阳县住房和城乡建设局网站
  • 乌兰浩特网站建设建设通网站电话
  • 手机模板网站开发做一个购物网站需要多久
  • 学校网站建设方案图片长安镇网站建设公司
  • 统计局网站建设wordpress iis6伪静态
  • 深圳网站设计三把火做个软件需要多少钱
  • 做响应式网站一般都用哪些框架巫山网站制作
  • 深圳住房和建设局网站 申请网站开发目的简介
  • 手机网站怎么制作网站设计素材模板
  • 重庆网站建设网站鱼巴士设计师服务平台
  • 南宁企业网站建设制作建设网上银行官方网站
  • 广州网站维护公司杭州建设教育网站