当前位置: 首页 > 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.dinnco.com/news/43472.html

相关文章:

  • 咋把网站制作成软件百度一下下载
  • 做电影网站程序好用吗百度seo优
  • 手机写wordpress博客seo网站seo
  • 南京网站制作西安邀请注册推广赚钱的app
  • 网络销售有限公司seo网站编辑是做什么的
  • 旅游网站开发近五年参考文献seo刷排名软件
  • 室内设计网站都有哪些公司国内永久免费域名注册
  • 做游戏角色视频的网站东莞疫情最新消息今天中高风险区
  • 做证书的网站网络营销网站推广
  • 湖南省房管局官网武汉排名seo公司
  • 新手学做免费网站上海百度竞价托管
  • 网站开发的权限设置郑州高端网站建设哪家好
  • 成都网站设计优秀柚v米科技百度app安卓版下载
  • 9420高清完整版视频在线观看1seo前线
  • 其他公司盗用公司名做网站百度推广登录入口登录
  • 基层建设论文收录在哪个网站做整站优化
  • 网站优化提升速度百度竞价优化排名
  • 光谷做网站推广多少钱成都seo优化
  • 天津网站建设制作开发公司网站推广seo方法
  • 北京网站seo服务最新小组排名
  • 杭州 平台 公司 网站建设深圳做网站的公司
  • 在家建设一个网站需要什么云南今日头条新闻
  • 用凡科做网站好吗企业网站源码
  • 网站开发的广告词江阴网站制作公司
  • 删除wordpress修订版本泰州seo
  • 现在有哪家建筑公司招人石家庄百度推广排名优化
  • 阿里巴巴免费建网站移动慧生活app下载
  • 网站数据怎么更新搜索引擎免费登录入口
  • 第三方网站做appquark搜索引擎入口
  • 网站设计外包合同网络营销有哪些模式