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

网站开发项目推荐360收录批量查询

网站开发项目推荐,360收录批量查询,建设部网站官网注册监理工程师,刚做优化的网站什么能更新题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(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.15wanjia.com/news/55628.html

相关文章:

  • 网站开发整合套件百度搜索资源平台token
  • 织梦本地网站建设教程品牌设计
  • 综合性网站建设电商平台怎么搭建
  • 网站内容告知书某产品网络营销推广方案
  • 花都做网站公司试分析网站推广和优化的原因
  • 淘宝做个网站多少钱关键词免费网站
  • 网站如何做质保系统东莞网站推广大全
  • 二手房网站怎么做才能接到电话网络服务提供者
  • 电子商务旅游网站建设论文百度浏览器打开
  • 共享办公商业租赁网站模板seo报价单
  • 织梦做的网站打开慢宁波超值关键词优化
  • 宣城网站seo诊断昆明网站开发推广公司
  • 服务器发布网站360浏览器网页版入口
  • 中国建设教育协会的是假网站吗冯耀宗seo
  • 电子商务网站建设怎么做seo关键词优化的技巧和方法
  • 50个创业小型加工厂seo关键词排名查询
  • 一个可以看qq空间的网站百度快照收录入口
  • 如何自己做网站发布到服务器上面小红书关键词排名怎么做
  • 电商网站建设功能需求东莞网络优化排名
  • 网站规划的基本步骤烟台百度推广公司
  • 模板网站制作多少钱全球搜索大全
  • 摄影网站设计理念百度网址安全检测中心
  • 黑龙江做网站的公司在线网页制作网站
  • 建设可以聊天的网站搜索引擎优化分析
  • 有什么网站是可以做ui的搜索引擎下载安装
  • 两学一做网站是多少钱网络外包运营公司
  • 给个人网站做百度百科做网站的好处
  • 网站连接微信搜索引擎优化实验报告
  • 北京做兼职从哪个网站百度图片
  • 网站制作建设湖北网站seo