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

网站建设方案及报/搜索关键词网站

网站建设方案及报,搜索关键词网站,网站服务器机房,网站建设人员岗位要求本篇博客给大家带来的是用C语言来解答用队列实现栈! 🐟🐟文章专栏:每日一练 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想:不服输的少…

本篇博客给大家带来的是用C++语言来解答用队列实现栈!

🐟🐟文章专栏:每日一练

🚀🚀若有问题评论区下讨论,我会及时回答

❤❤欢迎大家点赞、收藏、分享!

今日思想:不服输的少年啊,请你再努力一下!

题目描述:
 

 思路:创建两个队列来实现栈,栈的特点是先进后出,队列的特点是先进先出,那么假如一个队列存储1234,那么先出来的也是1234,这时我们把前3个数据(123)放到另外一个队列中去,这时候4就可以先出来,然后再把存储(123)数据的队列前2个数据(12)放到另外一个队列中去,那么3就可以出来,以此反复就可以实现栈。

注意:不懂栈和队列的可以先看看这两篇博客,或许对你有帮助。【C++】数据结构 队列的实现-CSDN博客

【C++】数据结构 栈的实现-CSDN博客

代码实例:

//定义结点的结构
typedef int QDataType;
typedef struct QueueNode
{QDataType data;struct QueueNode* next;
}QueueNode;//定义队列的结构
typedef struct Queue
{QueueNode* phead;//队头QueueNode* ptail;//队尾int size;//有效数据个数
}Queue;//队列的初始化
void QueueInit(Queue* pq)
{assert(pq);pq->phead = pq->ptail = NULL;pq->size=0;
}//队列的销毁
void QueueDestroy(Queue* pq)
{assert(pq);QueueNode* pcur = pq->phead;while (pcur){QueueNode* next = pcur->next;free(pcur);pcur = next;}pq->phead = pq->ptail = 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;//队列为空,newnode是队头也是队尾if (pq->phead == NULL){pq->phead = pq->ptail = newnode;}else{//队列非空,直接插入队尾pq->ptail->next = newnode;pq->ptail = pq->ptail->next;}pq->size++;
}//判断队列是否为空
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->phead == 0;
}//出队——队头
void QueuePop(Queue* pq)
{assert(!QueueEmpty(pq));//只有一个结点的情况if (pq->phead == pq->ptail){free(pq->phead);pq->phead = pq->ptail = NULL;}else{QueueNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}pq->size--;
}//取队头数据
QDataType QueueFront(Queue* pq)
{assert(!QueueEmpty(pq));return pq->phead->data;
}//取队尾数据
QDataType QueueBack(Queue* pq)
{assert(!QueueEmpty(pq));return pq->ptail->data;
}//队列有效元素个数
int QueueSize(Queue* pq)
{return pq->size;
}typedef struct {Queue q1;Queue q2;
} MyStack;MyStack* myStackCreate() {MyStack* pst=(MyStack*)malloc(sizeof(MyStack));QueueInit(&pst->q1);QueueInit(&pst->q2);return pst;
}void myStackPush(MyStack* obj, int x) {//往不为空队列中插入数据if(!QueueEmpty(&obj->q1)){QueuePush(&obj->q1,x);}else{QueuePush(&obj->q2,x);}
}int myStackPop(MyStack* obj) {//找不为空的队列,将不为空队列中前size-1个数据导入空队列中Queue* emp=&obj->q1;Queue* noneEmp=&obj->q2;if(QueueEmpty(&obj->q2)){emp=&obj->q2;noneEmp=&obj->q1;}while(QueueSize(noneEmp)>1){//把noneEmp中的队头数据导入到空队列中QueuePush(emp,QueueFront(noneEmp));QueuePop(noneEmp);}int top=QueueFront(noneEmp);QueuePop(noneEmp);return top;
}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);obj=NULL;
}/*** Your MyStack struct will be instantiated and called as such:* MyStack* obj = myStackCreate();* myStackPush(obj, x);* int param_2 = myStackPop(obj);* int param_3 = myStackTop(obj);* bool param_4 = myStackEmpty(obj);* myStackFree(obj);
*/

http://www.whsansanxincailiao.cn/news/32010546.html

相关文章:

  • wordpress分享朋友圈/百度快速优化排名软件
  • 做防水怎么注册网站/电子商务营销模式有哪些
  • 酒店预定类网站建设/口碑营销
  • 网站建设域名注册/互联网推广是什么
  • 专业网站建设办公/成人短期技能培训学校
  • 常平镇网站仿做/301313龙虎榜
  • 邢台太行中学地址/优化大师官方正版下载
  • 西安网站开发外包公司有/网络营销的现状及问题
  • 做问卷网站/程序员培训机构排名前十
  • 军事最新消息中国/关键词seo
  • 免费图片素材网站有哪些/网站优化外包
  • 长沙网页设计/百度禁止seo推广
  • 中文h5编程工具/河南seo和网络推广
  • 没固定ip怎么做网站/厦门最好的seo公司
  • 旅游网站开发指导/深圳百度推广关键词推广
  • 要做个卖东西网站怎么做/在百度怎么免费发布广告
  • vscode网站开发/教育机构网站
  • 域名与网站建设/怎么做属于自己的网站
  • 怎样做网站内链/企业培训课程视频
  • wordpress手机认证登录页面/seoshanghai net
  • 怎么看网站是否被k过/查收录
  • 教资报名网站设置/百度推广找谁
  • 该网站正在建设中 马上就来/生哥seo博客
  • 互联网做网站/网站搜索引擎优化的方法
  • 网站规划与建设需求分析/小红书推广方案
  • 工业设计公司经营范围/seo的优化原理
  • 佛山网站建设格式有哪些/高明公司搜索seo
  • 程序员必知的网站/百度seo排名优化系统
  • 手机网站开发的目的/佛山seo关键词排名
  • 制作一个公司网站多少/免费推广网站2023mmm