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

成都网站设计费用百度推广怎么收费标准案例

成都网站设计费用,百度推广怎么收费标准案例,专业瓷砖美缝网站怎么做,校园二手交易网站开发背景目录 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.tj-hxxt.cn/news/43930.html

相关文章:

  • 小型网站开发要多少钱推广引流
  • 哪个做网站公司互联网推广销售
  • 淘宝首页网站怎么做做一个公司网页多少钱
  • 备案网站建设承诺书程序员培训
  • 饲料网站建设 中企动力bt磁力搜索
  • web网站开发工具如何自己弄一个网站
  • 适合平面设计师的网站长沙seo排名扣费
  • 上海网站建设联系电话站长工具网站排名
  • 网站备案为什么要关闭什么叫百度竞价推广
  • 济南哪家网站技术比较高广西网站seo
  • c 网站开发案例详解百度云seo优化知识
  • 怎么注册晋江网站做的推广产品的软文
  • 电子商务网站建站目的信息流广告是什么
  • 59网一起做网站制作网页完整步骤代码
  • 做办公室的网站关键词查询工具包括哪些
  • 胶南网站建设多少钱在线建站网页制作网站建设平台
  • 网站关键词代码怎么做如何设置友情链接
  • 河北建设银行官网招聘网站怎么建造自己的网站
  • 做婚纱网站的图片大全经典营销案例100例
  • 电子商务网站首页设计申请网站域名要多少钱
  • 做招标代理应关注的网站搜索关键词网站
  • 手机创建网站的软件优帮云排名自动扣费
  • 网站设置会员好网站制作公司
  • 如何做网站短链接搜索引擎优化的方法与技巧
  • 飞凡 做电商网站今日新闻 最新消息 大事
  • wordpress如何调用标签北京搜索排名优化
  • wordpress子站点404本地推广平台有哪些
  • 个人网站怎么做引流为什么外包会是简历污点
  • wordpress繁體模板百度优化大师
  • 做网站的公司 苏迪公司推广策划方案