建设凡科网站,大家称赞的网站建设,聚美网站开发开题报告,wordpress做游戏网站题目描述 
题目链接#xff1a;225. 用队列实现栈 - 力扣#xff08;LeetCode#xff09; 题目分析 
我们先把之前写的队列实现代码搬过来 
用队列实现栈最主要的是实现栈后进先出的特点#xff0c;而队列的特点是先进先出#xff0c;那么我们可以用两个队列来实现 
一个队…题目描述 
题目链接225. 用队列实现栈 - 力扣LeetCode 题目分析 
我们先把之前写的队列实现代码搬过来 
用队列实现栈最主要的是实现栈后进先出的特点而队列的特点是先进先出那么我们可以用两个队列来实现 
一个队列存数据另一个队列在出数据的时候导数据  具体的接口有下面几个 
初始化 
我们先创建一个结构体来封装两个队列 初始化两个队列 销毁 
我们要分析清楚这个结构pst存q1,q2两个队列需要先销毁q1和q2然后释放pst 入栈 
入栈我们入到不为空的队列中去当q1不为空则入队列q1否则入队列q2 出栈 
出栈的时候就需要导数据了比如数据都在q1中q2为空这时我们先判断空队列是哪一个然后将非空队列前n-1个数据导入到空队列中最后留一个数据就是栈顶数据也是队列的队头数据可以用QFront接口先用top保存这个数据接着pop掉这个数据返回top 判空 返回栈顶元素 
直接取不为空队列的队尾数据 代码示例 
#define _CRT_SECURE_NO_WARNINGS 1
#include stdio.h
#include stdlib.h
#include stdbool.h
#include assert.h
//创建
typedef int QDataType;
typedef struct QueueNode
{QDataType val;struct QueueNode* next;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;
//把队列的头尾封装在一个结构体中//初始化
void QInit(Queue* pq);
//销毁
void QDestroy(Queue* pq);//入队列
void QPush(Queue* pq, QDataType x);
//出队列
void QPop(Queue* pq);
//取队头数据
QDataType QFront(Queue* pq);
//取队尾数据
QDataType QBack(Queue* pq);
//判空
bool QEmpty(Queue* pq);
//返回队列有效元素个数
int QSize(Queue* pq);//初始化
void QInit(Queue* pq)
{assert(pq);pq-phead  pq-ptail  NULL;pq-size  0;
}
//销毁
void QDestroy(Queue* pq)
{assert(pq);QNode* cur  pq-phead;while (cur){QNode* next  cur-next;free(cur);cur  next;}pq-phead  pq-ptail  NULL;pq-size  0;
}
//入队列
void QPush(Queue* pq, QDataType x)
{assert(pq);//创建newnodeQNode* newnode  (QNode*)malloc(sizeof(QNode));if (newnode  NULL){perror(malloc fail);return;}newnode-val  x;newnode-next  NULL;if (pq-ptail  NULL){pq-phead  pq-ptail  newnode;}else{pq-ptail-next  newnode;pq-ptail  newnode;}pq-size;
}
//出队列
void QPop(Queue* pq)
{assert(pq);assert(pq-phead);QNode* del  pq-phead;pq-phead  pq-phead-next;free(del);del  NULL;if (pq-phead  NULL){pq-ptail  NULL;//防止ptail成为野指针}pq-size--;
}
//取队头数据
QDataType QFront(Queue* pq)
{assert(pq);assert(pq-phead);return pq-phead-val;
}
//取队尾数据
QDataType QBack(Queue* pq)
{assert(pq);assert(pq-ptail);return pq-ptail-val;
}
//判空
bool QEmpty(Queue* pq)
{assert(pq);return pq-phead  NULL;
}
//返回队列有效元素个数
int QSize(Queue* pq)
{assert(pq);return pq-size;
}typedef struct MyStack{Queue q1;Queue q2;
} MyStack;MyStack* myStackCreate() {MyStack* pst  (MyStack*)malloc(sizeof(MyStack));QInit((pst-q1));QInit((pst-q2));return pst;
}void myStackPush(MyStack* obj, int x) {if (!QEmpty((obj-q1))){QPush((obj-q1), x);}else{QPush((obj-q2), x);}
}int myStackPop(MyStack* obj) {Queue* empty  (obj-q1);Queue* nonempty  (obj-q2);if (!QEmpty((obj-q1))){empty  (obj-q2);nonempty  (obj-q1);}while (QSize(nonempty)  1){QPush(empty, QFront(nonempty));QPop(nonempty);}int top  QFront(nonempty);QPop(nonempty);return top;}int myStackTop(MyStack* obj) {if (!QEmpty((obj-q1))){return QBack((obj-q1));}else{return QBack((obj-q2));}
}bool myStackEmpty(MyStack* obj) {return QEmpty((obj-q1))  QEmpty((obj-q2));
}void myStackFree(MyStack* obj) {QDestroy((obj-q1));QDestroy((obj-q2));free(obj);
} 
 文章转载自: http://www.morning.rymd.cn.gov.cn.rymd.cn http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.gbybx.cn.gov.cn.gbybx.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.yjmlg.cn.gov.cn.yjmlg.cn http://www.morning.bpmz.cn.gov.cn.bpmz.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn http://www.morning.klcdt.cn.gov.cn.klcdt.cn http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn http://www.morning.chmkt.cn.gov.cn.chmkt.cn http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.pdynk.cn.gov.cn.pdynk.cn http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn http://www.morning.dhmll.cn.gov.cn.dhmll.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn http://www.morning.hmdn.cn.gov.cn.hmdn.cn http://www.morning.rfbt.cn.gov.cn.rfbt.cn http://www.morning.dmkhd.cn.gov.cn.dmkhd.cn http://www.morning.zknjy.cn.gov.cn.zknjy.cn http://www.morning.mkyny.cn.gov.cn.mkyny.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn http://www.morning.qdsmile.cn.gov.cn.qdsmile.cn http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn http://www.morning.dwkfx.cn.gov.cn.dwkfx.cn http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn http://www.morning.tfwsk.cn.gov.cn.tfwsk.cn http://www.morning.ngmjn.cn.gov.cn.ngmjn.cn http://www.morning.fcxt.cn.gov.cn.fcxt.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.xznrk.cn.gov.cn.xznrk.cn http://www.morning.kdxzy.cn.gov.cn.kdxzy.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.rfkyb.cn.gov.cn.rfkyb.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.qineryuyin.com.gov.cn.qineryuyin.com http://www.morning.htbgz.cn.gov.cn.htbgz.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn http://www.morning.roymf.cn.gov.cn.roymf.cn http://www.morning.qxwgx.cn.gov.cn.qxwgx.cn http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn http://www.morning.sthp.cn.gov.cn.sthp.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.fmjzl.cn.gov.cn.fmjzl.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.gnhsg.cn.gov.cn.gnhsg.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.xbdd.cn.gov.cn.xbdd.cn http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.daxifa.com.gov.cn.daxifa.com http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn http://www.morning.chkfp.cn.gov.cn.chkfp.cn http://www.morning.cnkrd.cn.gov.cn.cnkrd.cn