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

成都网站设计费用聚合广告联盟

成都网站设计费用,聚合广告联盟,WordPress对段落美化,人个做外贸用什么网站好目录 1.实现方法 过程详解 1.执行push 1->push 2->push 3->push 4 2.执行第一个pop 3.执行第二个pop 4.执行push 5->push 6 ​编辑 5.执行pop->pop->pop 代码实现 队列创建函数myQueueCreate 入队函数myQueuePush 出队函数myQueuePop 返回队列开头…

目录

1.实现方法

过程详解

1.执行push 1->push 2->push 3->push 4

2.执行第一个pop

 3.执行第二个pop

4.执行push 5->push 6

​编辑

 5.执行pop->pop->pop

代码实现

队列创建函数myQueueCreate

入队函数myQueuePush

出队函数myQueuePop

返回队列开头元素的函数myQueuePeek

判断队列是否为空的函数myQueueEmpty

队列销毁函数myQueueFree

2.提交结果


解决L19.【LeetCode笔记】用栈实现队列(方法1)遗留未讲的方法2

1.实现方法

过程详解

实现方法和方法1有较大的不同,一个栈用于入(push)数据,另一个栈(pop)用于出数据

对于"push 1->push 2->push 3->push 4->pop->pop->push 5->push 6->->pop->pop->pop"过程画图分析

初始化时两个栈都为空,随便选一个压入数据

1.执行push 1->push 2->push 3->push 4

2.执行第一个pop

按队列的性质,需要pop 1,则需要将2,3,4拿出放到另一个栈中

 3.执行第二个pop

按队列的性质,需要pop 2,此时直接对右侧栈pop

4.执行push 5->push 6

此时不能将5和6压入第二个栈,会改变队列的顺序,因此需要压入左侧的栈

 5.执行pop->pop->pop

前两个pop将3和4出队

最后一次pop需要将5和6压入右侧的栈才能以正确的顺序出队

通过分析,可以得出方法2的核心在:一个栈用于入数据,另一个栈用于出数据

代码实现

由过程详解可知,可以专门定义一个栈用于入数据,另一个栈用于出数据

typedef struct 
{ST pushst;ST popst;
} MyQueue;

队列创建函数myQueueCreate

MyQueue* myQueueCreate()
{MyQueue* obj=(MyQueue*)malloc(sizeof(MyQueue));if (obj==NULL){perror("malloc");return NULL;}STInit(&obj->pushst);STInit(&obj->popst);return obj;
}

入队函数myQueuePush

void myQueuePush(MyQueue* obj, int x) 
{STPush(&obj->pushst,x);
}

出队函数myQueuePop

这里要分类讨论,由"过程详解"可知,要判断栈popst是否为空,如果为空,需要将pushst的数据(前提是有数据,因此还要再做一次判断,即嵌套判断)全部拿过来,记录栈顶元素后再pop

int myQueuePop(MyQueue* obj) 
{if (STEmpty(&obj->popst)){while(!STEmpty(&obj->pushst)){STPush(&obj->popst,STTop(&obj->pushst));STPop(&obj->pushst);}}int front=STTop(&obj->popst);STPop(&obj->popst);return front;
}

返回队列开头元素的函数myQueuePeek

和myQueuePop类似,返回popst的栈顶元素,如果popst为空,则将需要将pushst的数据拿过来

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);
}

这里myQueuePop的第二种写法,让代码更简洁

int myQueuePop(MyQueue* obj)
{int front=myQueuePeek(obj);STPop(&obj->popst);return front;
}

注意:使用myQueuePeek前要声明否则报错!!!

判断队列是否为空的函数myQueueEmpty

当两个栈都为空时,队列才为空

bool myQueueEmpty(MyQueue* obj) 
{return STEmpty(&obj->pushst) && STEmpty(&obj->popst);
}

队列销毁函数myQueueFree

malloc是怎么开辟的,那队列就是怎么销毁的

结构图

void myQueueFree(MyQueue* obj) 
{STDestory(&obj->pushst);STDestory(&obj->popst);free(obj);
}

2.提交结果

http://www.yidumall.com/news/47787.html

相关文章:

  • asp.net做的网站模板下载关键词优化推广公司
  • 免费申请网站 主机 空间关键词排名怎么做好
  • 网站开发费属于无形资产那部分网站设计公司怎么样
  • 无锡网站开发befen百度怎么做自己的网页
  • wordpress内存高seo推广宣传
  • 天长两学一做网站个人网站建站流程
  • 做网站一个月20g流量够吗贴吧高级搜索
  • dedecms 网站导航吸引人气的营销方案
  • 网站广告推广平台营销策略分析
  • 网络运维与网络安全工程师seo关键词优化怎么收费
  • 网做网站武汉做网页推广公司
  • 提供网站建设定制seo助手
  • 企业品牌网站设计怎么创建网址
  • 平和网站建设谷歌seo价格
  • 做网站怎么添加关键词竞价恶意点击犯法吗
  • 做网站一天赚多少钱湖南靠谱seo优化报价
  • 牛商营销型网站建设方案整站优化推广
  • 福田网站设计公司完整的社群营销方案
  • 做音乐网站要多少钱西安优化外
  • 网站前期规划报告营销推广的作用
  • 网站开发的研究现状中国百强城市榜单
  • 用易语言做抢购网站软件百度旅游官网
  • 虚拟主机网站建设过程怎么优化标题和关键词排名
  • 西昌城乡建设网站百度导航最新版本下载安装
  • 长阳网站建设外贸网站推广公司
  • 网站建设的核心博客推广的方法与技巧
  • 远邦保险经纪网站开发助理墨子学院seo
  • 网站发稿平台人大常委会委员长
  • php网站怎么做缓存建站公司排名
  • 外贸仿牌网站建设《新闻联播》 今天