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

什么网站做禽苗的多中国新冠一共死去的人数

什么网站做禽苗的多,中国新冠一共死去的人数,前端做微网站,佛山企业网站推广【Leedcode】栈和队列必备的面试题#xff08;第三期#xff09; 文章目录【Leedcode】栈和队列必备的面试题#xff08;第三期#xff09;一、题目#xff08;用两个栈实现队列#xff09;二、思路图解1.定义两个栈2.初始化两个数组栈3. 将数据放入pushST数组栈中4.删除…【Leedcode】栈和队列必备的面试题第三期 文章目录【Leedcode】栈和队列必备的面试题第三期一、题目用两个栈实现队列二、思路图解1.定义两个栈2.初始化两个数组栈3. 将数据放入pushST数组栈中4.删除队列数据4.返回队列顶的数据5.判断队列是否为空6.释放销毁队列三、整体源代码总结一、题目用两个栈实现队列 Leedcode链接 这几个接口使我们需要实现的我会一 一实现并讲解 二、思路图解 注意这里会用到很多栈和队列接口实现的一些知识这里不再深究如果想了解可以去下面两个博客 栈的接口模拟实现 队列的接口模拟实现 做本题需要的接口和结构体声明 代码如下示例 typedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }Stack;void StackInit(Stack* ps);//初始化栈 void StackDestroy(Stack* ps);//销毁栈 void StackPush(Stack* ps, STDataType x);//存放栈 void StackPop(Stack* ps);//删除栈 STDataType StackTop(Stack* ps);//获取栈顶信息 int StackSize(Stack* ps);//获取栈内数据个数 bool StackEmpty(Stack* ps);//判断栈是否为空 如果是空返回truevoid StackInit(Stack* ps)//初始化栈 {assert(ps);ps-a NULL;ps-top 0;ps-capacity 0; }void StackDestroy(Stack* ps)//销毁栈 {assert(ps);free(ps-a);ps-top 0;ps-capacity 0; }void StackPush(Stack* ps, STDataType x)//存放栈数据 {assert(ps);if (ps-top ps-capacity){//增容//capacity 如果是0 那么就定义为4 如果不是0 则capacity乘以 2 三目操作符 ? :int newCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDataType* tmp realloc(ps-a, sizeof(STDataType) * newCapacity);if (tmp NULL){printf(realloc fail);exit(-1);}//拿到新开辟的空间地址 - 更新增容后的最大空间数量 ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; }void StackPop(Stack* ps)//删除栈 {assert(ps);assert(!StackEmpty(ps));ps-top--; }STDataType StackTop(Stack* ps)//获取栈顶信息 {assert(ps);assert(!StackEmpty(ps));return ps-a[ps-top-1]; }int StackSize(Stack* ps)//获取栈内数据个数 {assert(ps);return ps-top; }bool StackEmpty(Stack* ps)//判断栈是否为空 如果是空返回true {assert(ps);//if (ps-top 0)//{// return true;//}//else// return false;return ps-top 0; }1.定义两个栈 代码如下示例 typedef struct {Stack pushST;Stack popST; } MyQueue;2.初始化两个数组栈 代码如下示例 MyQueue* myQueueCreate() {MyQueue* q (MyQueue*)malloc(sizeof(MyQueue));StackInit(q-pushST);StackInit(q-popST);return q; }3. 将数据放入pushST数组栈中 代码如下示例 void myQueuePush(MyQueue* obj, int x) {StackPush(obj-pushST, x); }4.删除队列数据 代码如下示例 int myQueuePop(MyQueue* obj) {if(StackEmpty(obj-popST)){while(!StackEmpty(obj-pushST)){StackPush(obj-popST, StackTop(obj-pushST));StackPop(obj-pushST);}}int front StackTop(obj-popST);StackPop(obj-popST);return front; }4.返回队列顶的数据 这里接口实现和删除队列数据很详细这里不用删除直接返回即可 代码如下示例 int myQueuePeek(MyQueue* obj) {if(StackEmpty(obj-popST)){while(!StackEmpty(obj-pushST)){StackPush(obj-popST, StackTop(obj-pushST));StackPop(obj-pushST);}}return StackTop(obj-popST); }5.判断队列是否为空 代码如下示例 bool myQueueEmpty(MyQueue* obj) {return StackEmpty(obj-popST) StackEmpty(obj-pushST); }6.释放销毁队列 代码如下示例 void myQueueFree(MyQueue* obj) {StackDestroy(obj-popST);StackDestroy(obj-pushST);free(obj); }三、整体源代码 代码如下示例 typedef int STDataType;typedef struct Stack {STDataType* a;int top;int capacity; }Stack;void StackInit(Stack* ps);//初始化栈 void StackDestroy(Stack* ps);//销毁栈 void StackPush(Stack* ps, STDataType x);//存放栈 void StackPop(Stack* ps);//删除栈 STDataType StackTop(Stack* ps);//获取栈顶信息 int StackSize(Stack* ps);//获取栈内数据个数 bool StackEmpty(Stack* ps);//判断栈是否为空 如果是空返回truevoid StackInit(Stack* ps)//初始化栈 {assert(ps);ps-a NULL;ps-top 0;ps-capacity 0; }void StackDestroy(Stack* ps)//销毁栈 {assert(ps);free(ps-a);ps-top 0;ps-capacity 0; }void StackPush(Stack* ps, STDataType x)//存放栈数据 {assert(ps);if (ps-top ps-capacity){//增容//capacity 如果是0 那么就定义为4 如果不是0 则capacity乘以 2 三目操作符 ? :int newCapacity ps-capacity 0 ? 4 : ps-capacity * 2;STDataType* tmp realloc(ps-a, sizeof(STDataType) * newCapacity);if (tmp NULL){printf(realloc fail);exit(-1);}//拿到新开辟的空间地址 - 更新增容后的最大空间数量 ps-a tmp;ps-capacity newCapacity;}ps-a[ps-top] x;ps-top; }void StackPop(Stack* ps)//删除栈 {assert(ps);assert(!StackEmpty(ps));ps-top--; }STDataType StackTop(Stack* ps)//获取栈顶信息 {assert(ps);assert(!StackEmpty(ps));return ps-a[ps-top-1]; }int StackSize(Stack* ps)//获取栈内数据个数 {assert(ps);return ps-top; }bool StackEmpty(Stack* ps)//判断栈是否为空 如果是空返回true {assert(ps);//if (ps-top 0)//{// return true;//}//else// return false;return ps-top 0; }typedef struct {Stack pushST;Stack popST; } MyQueue;MyQueue* myQueueCreate() {//动态开辟一个空间MyQueue* q (MyQueue*)malloc(sizeof(MyQueue));//初始化两个数组栈StackInit(q-pushST);StackInit(q-popST);return q; }void myQueuePush(MyQueue* obj, int x) {//将数据放入pushST数组栈中StackPush(obj-pushST, x); }int myQueuePop(MyQueue* obj) {//如果popST数组栈是空的 就从pushST数组栈中尝试取数据//然后popST数组栈顶部就是第一个元素。删除第一个元素就符合队列先进先出的逻辑了if(StackEmpty(obj-popST)){//循环条件 只要pushST不为空就进入循环while(!StackEmpty(obj-pushST)){//将pushST数组栈中的数据放入popst数组栈中StackPush(obj-popST, StackTop(obj-pushST));//数据已经拷贝到popst数组栈中 pushST数组栈中的整个数据就可以删除了StackPop(obj-pushST);}}//将准备删除的数据放入局部变量front这个元素是队列的头元素int front StackTop(obj-popST);//删除头元素队列删出头元素的行为StackPop(obj-popST);//函数要求返回整个被删除的头元素return front; }int myQueuePeek(MyQueue* obj) {//如果popST数组栈是空的 就从pushST数组栈中尝试取数据//然后popST数组栈顶部就是第一个元素。删除第一个元素就符合队列先进先出的逻辑了if(StackEmpty(obj-popST)){while(!StackEmpty(obj-pushST)){StackPush(obj-popST, StackTop(obj-pushST));StackPop(obj-pushST);}}//函数要求返回数据 返回popST数组栈的栈顶元素的数据return StackTop(obj-popST); }bool myQueueEmpty(MyQueue* obj) {//当popST 与 pushST 都是空时 return返回真true 否则为假 falsereturn StackEmpty(obj-popST) StackEmpty(obj-pushST); }void myQueueFree(MyQueue* obj) {//将popST 与 pushST 的空间先销毁 后 释放 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); */ 总结 以上就是今天要讲的内容本文介绍了【Leedcode】中栈和队列必备的面试题第三期 如果我的博客对你有所帮助记得三连支持一下感谢大家的支持
http://www.w-s-a.com/news/609579/

相关文章:

  • 西安手机网站python网站开发效率
  • 深圳建站的公司羽毛球赛事2022直播
  • j2ee网站开发搜索推广的流程
  • 网站目录结构图虚拟主机如何安装WordPress
  • 信产部网站备案保定软件开发网站制作
  • 东莞网站设计定做东莞网站建设最牛
  • 网站开发的软件天猫的网站导航怎么做的
  • 做链接哪个网站好网站建设平台方案设计
  • 资质升级业绩备案在哪个网站做网站建设方案费用预算
  • 做网站找哪个平台好wordpress 3.9 性能
  • 大兴模版网站建设公司企业网站备案案例
  • h5建站是什么wordpress客户端 接口
  • 济南自适应网站建设制作软件下载
  • 望都网站建设抖音广告投放收费标准
  • 网站制作软件排行榜上海市网站建设公司58
  • 什么是网站风格中国工商网企业查询官网
  • 专业建设专题网站wordpress lnmp wamp
  • 环保网站 下载页网站
  • 开源小程序模板江门关键词优化排名
  • 网站开发 知乎房地产型网站建设
  • 买完域名网站怎么设计wordpress 纯代码
  • 公司网站怎么做百度竞价宁波网络公司哪家好
  • 河西网站建设制作微信分销系统多层
  • 网站制作完成后应进入什么阶段石家庄网站建设找哪家好
  • 南通外贸网站推广自在源码网官网
  • 个人网站模板html下载餐饮vi设计案例欣赏
  • 高端网站建设wanghess网站开发售后服务承诺
  • 江西网站建设费用企业网站推广的方法有( )
  • 中国十大网站开发公司企业网站建设的要素有哪些
  • 网站防站做网站吉林