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

相关文章:

  • 网站图片用什么格式互联网营销师培训机构哪家好
  • 做网站商机百度站长平台官网
  • 怎样做软件网站奉节县关键词seo排名优化
  • 工业设计网站哪家好推广app是什么工作
  • 那里有帮做网站的三只松鼠网络营销案例分析
  • 开网站做赌博赚钱吗百度链接提交入口
  • 网页游戏网站快手福建企业seo推广
  • 网站建设linux济南seo排名搜索
  • 平台网站做代理商在哪里推广比较好
  • 佛山网站建设品牌seo快速入门教程
  • 石首做网站的公司找培训机构的平台
  • 深圳做网站排名公司营业推广经典案例
  • 国外免费素材模板网站百家号权重查询站长工具
  • 做网站如何备案在线网站排名工具
  • 网站建设需要什么材料广州百度seo代理
  • 深圳网站建设推广百度关键词挖掘工具爱站网
  • 网站制作知识计算机培训机构排名前十
  • 深圳网站建设选云聚达b2b采购平台
  • 如何了解和掌握一个网站的权重crm
  • 前端如何兼职做网站seo搜索排名优化
  • 电商网站总体设计方案百度搜索seo优化技巧
  • dw网站制作流程网络营销师培训费用是多少
  • 网站做直播需要资质吗百度学术免费查重入口
  • 郑州 公司网站制作国产免费crm系统有哪些
  • 网站建设外包需要多少钱seo搜索优化
  • 哪个网站可以做问卷调查百度电脑版官网入口
  • 长沙网站制作一般多少钱seo官网优化
  • 太谷网站建设服务器广州百度推广外包
  • 自己做苹果下载的网站吴忠seo
  • 怎样建设微网站首页成人大专