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

特价网站建设价格低安徽六安什么时候解封

特价网站建设价格低,安徽六安什么时候解封,天河建设网站设计,设计师必备的网站有哪些目录 一.【Leetcode225】队列实现栈 1.链接 2.题目再现 3.解法 二.【Leetcode232】栈实现队列 1.链接 2.题目再现 3.解法 一.【Leetcode225】队列实现栈 1.链接 队列实现栈 2.题目再现 3.解法 这道题给了我们两个队列#xff0c;要求去实现栈#xff1b; 首先… 目录 一.【Leetcode225】队列实现栈 1.链接 2.题目再现 3.解法 二.【Leetcode232】栈实现队列 1.链接 2.题目再现 3.解法 一.【Leetcode225】队列实现栈 1.链接 队列实现栈 2.题目再现 3.解法 这道题给了我们两个队列要求去实现栈 首先我们要知道栈和队列的特征 栈后进先出只能从栈顶入数据和出数据 队列先进先出从队尾入数据队头出数据 根据这些特点我们可以采用两边倒的方法来实现 具体来说 1.入栈时就是在不为空的队列插入数据若两个队列都为空就随便插入到一个队列中 2.出栈时将不为空的队列的数据倒入为空的队列中当不为空的队列就剩一个数据时就停止向空队列倒数据然后再删点那最后一个数据 3.判空时需要两个队列都为空才算栈为空 4.取栈顶元素即取不为空的队列的队尾元素在取栈顶元素前要判断栈是否为空 5.销毁栈时要先销毁其中的两个队列然后再销毁栈。 因为是用C语言实现的所以得自己手搓个队列。 typedef int Qdatatype;typedef struct QueueNode {struct QueeuNode* next;Qdatatype data; }QueueNode;typedef struct Queue {QueueNode* head;QueueNode* tail; }Queue; void Queueinit(Queue* pq) {assert(pq);pq-head NULL;pq-tail NULL; }void Queuedestroy(Queue* pq) {assert(pq);QueueNode* cur pq-head;while (cur ! pq-tail){QueueNode* next cur-next;free(cur);cur next;}pq-head pq-tail NULL; }void Queuepush(Queue* pq, Qdatatype x) {assert(pq);QueueNode* newnode (QueueNode*)malloc(sizeof(QueueNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data x;newnode-next NULL;if (pq-head NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;} }void Queuepop(Queue* pq) {assert(pq);assert(pq-head);QueueNode* next pq-head-next;if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{free(pq-head);pq-head next;} }Qdatatype Queuefront(Queue* pq) {assert(pq);assert(pq-head);return pq-head-data; }Qdatatype Queueback(Queue* pq) {assert(pq);assert(Queuesize(pq) 0);return pq-tail-data; }int Queuesize(Queue* pq) {assert(pq);int size 0;QueueNode* cur pq-head;while (cur ! pq-tail-next){size;cur cur-next;}return size; }bool Queueempty(Queue* pq) {assert(pq);return pq-head NULL; }typedef struct {Queue q1;Queue q2; } MyStack;MyStack* myStackCreate() {MyStack*obj(MyStack*)malloc(sizeof(MyStack));if(objNULL)exit(-1);Queueinit(obj-q1);Queueinit(obj-q2);return obj; }void myStackPush(MyStack* obj, int x) {if(!Queueempty(obj-q1)){Queuepush(obj-q1,x);}else{Queuepush(obj-q2,x);} }int myStackPop(MyStack* obj) {Queue*emptyobj-q1;Queue*noemptyobj-q2;if(!Queueempty(obj-q1)){emptyobj-q2;noemptyobj-q1;}while(Queuesize(noempty)1){Queuepush(empty,Queuefront(noempty));Queuepop(noempty);}int frontQueuefront(noempty);Queuepop(noempty);return front; }int myStackTop(MyStack* obj) {if(!Queueempty(obj-q1)){return Queueback(obj-q1);}else{return Queueback(obj-q2);} } bool myStackEmpty(MyStack* obj) {return Queueempty(obj-q1)Queueempty(obj-q2); }void myStackFree(MyStack* obj) {Queuedestroy(obj-q1);Queuedestroy(obj-q2);free(obj); }二.【Leetcode232】栈实现队列 1.链接 栈实现队列 2.题目再现 3.解法 这个的解法和上面的类似只不过这个不用总是来回倒 根据栈和队列的特征我们会发现将一个栈中的数据倒入另一个栈时数据的顺序刚好符合队列的要求不需要再重复地倒数据所以我们可以让一个栈专门用来入数据Pushst一个栈专门用来出数据Popst当我们要出数据而这个栈为空时我们才将用来入数据的栈中的数据倒入用来出数据的栈 。 如图 1.判空时需要两个栈都为空队列才为空 2.返回队头数据时和出数据的操作类似只是不需要删除队头的数据还有在之前要判断队列是否为空 3.销毁队列前要先销毁两个栈。 同样因为是C语言得先手搓个栈。 #define MR_CAP 5 typedef int STdatatype;typedef struct Stack {STdatatype* arr;int top;int capacity; }ST;void Stackinit(ST* ps) {assert(ps);ps-arr (STdatatype*)malloc(MR_CAP * sizeof(STdatatype));if (ps-arr NULL){perror(Stackinit malloc);exit(-1);}ps-top 0;ps-capacity MR_CAP; }void Stackdestroy(ST* ps) {assert(ps);free(ps-arr);ps-arr NULL;ps-top 0;ps-capacity 0; }void Stackpush(ST* ps, STdatatype x) {assert(ps);if (ps-top ps-capacity){STdatatype* tmp (STdatatype*)realloc(ps-arr, ps-capacity * 2 * sizeof(STdatatype));if (tmp NULL){perror(Stackpush realloc);exit(-1);}else{ps-arr tmp;ps-capacity * 2;}}ps-arr[ps-top] x;ps-top; }void Stackpop(ST* ps) {assert(ps);assert(ps-top 0);ps-top--; }STdatatype Stacktop(ST* ps) {assert(ps);return ps-arr[ps-top - 1]; }int Stacksize(ST* ps) {assert(ps);return ps-top;}bool Stackempty(ST* ps) {assert(ps);if (ps-top 0){return true;}elsereturn false;}typedef struct {ST Pushst;ST Popst; } MyQueue;MyQueue* myQueueCreate() {MyQueue*obj(MyQueue*)malloc(sizeof(MyQueue));if(objNULL)exit(-1);Stackinit(obj-Pushst);Stackinit(obj-Popst);return obj; }void myQueuePush(MyQueue* obj, int x) {Stackpush(obj-Pushst,x); }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);}int myQueuePop(MyQueue* obj) {int frontmyQueuePeek(obj);Stackpop(obj-Popst);return front; }bool myQueueEmpty(MyQueue* obj) {return Stackempty(obj-Pushst)Stackempty(obj-Popst); }void myQueueFree(MyQueue* obj) {Stackdestroy(obj-Pushst);Stackdestroy(obj-Popst);free(obj); }这两道题的讲解就到这里了若有错误或是建议欢迎小伙伴们指出。 希望小伙伴们可以多多支持博主哦。 谢谢你的阅读。
http://www.hkea.cn/news/14344907/

相关文章:

  • 深圳网站建设比较精品网站欣赏
  • 漂亮产品网站本地网站搭建
  • 为网站做一则广告语做网站需要什么营业执照
  • 做网站怎样用链接赚钱iis6添加网站
  • 北京网站制做的公司广西壮族自治区博物馆
  • 深圳建设资格注册中心网站wordpress自动博客
  • 昆明市住房和城乡建设局网站网站开发后台一般用什么
  • 旅行社网站规划与建设的流程图专业培训大全
  • 永川网站制作wordpress 多站点开启
  • 建网站建设网站建筑设计机构
  • 广西建设网站官网网站建设发展史
  • 公司网站介绍范文软件工程师招聘简章pdf
  • 网站设计师与网站开发工程师全屏背景网站如何做到自适应
  • 外贸网站建设公司价位wordpress虚线框可序列
  • 西宁房地产网站建设重庆市工程建设信息网2021
  • 建设商务网站需要哪些步骤网站台做计么呢
  • 网站备案 需要上传网站么中国建设银行招聘官方网站
  • 邯郸公司做网站东营企业自助建站
  • 安装百度优化大师使用心得
  • 一般网站的后台海外制作网站
  • 合肥市网站建设 小程序wordpress动漫主题曲
  • dede网站地图地睛方法数码做的网站怎么样
  • 网站建设套餐电商网站建设的目的
  • 怎么把自己做的网站传网上云南做网站的公司有哪些
  • 网站app建设图片外贸建站wordpress主题
  • 信息化和网站建设管理工作情况网站建设珠海
  • 外贸网站演示搜狗浏览器网页版入口
  • 网站备案vpn注销那些网站可以做问答
  • 手机网站建设视频教程烟台seo关键词排名
  • 网站标识描述可以填关键词吗哪个网站做外贸零售比较好呢