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

大连网站制作报价宝塔无法安装wordpress

大连网站制作报价,宝塔无法安装wordpress,网页如何保存密码,网站群建设的必要性本篇博客给大家带来的是用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.dtcms.com/wzjs/583693.html

相关文章:

  • 东铁匠营网站建设公司建站系统wordpress下载
  • 南京外贸网站建设哪家好淄博网站制作定制推广
  • 广州网站建设信科分公司哈尔滨市建筑信息网
  • 赣州网站建设开发微信小程序短链接生成
  • 电子商务网站建设与维护实验报告wordpress上传html
  • 网站上线前的准备工作深圳画册设计印刷公司
  • 东莞微客巴巴做网站网页游戏网页打不开
  • 网站的最近浏览 怎么做网站建设改版升级
  • 网站页面统计代码是什么淘宝u站怎么做网站的
  • 广州铁路投资建设集团网站360建筑网质量怎么样
  • 赣州网站优化推广怎样优化推广
  • 网站开发及app开发报价做电商运营有前途吗
  • 网站开发企业需要什么资质关于建设网站与营销的好处
  • 收费网站方案建设银行信用卡网站下载
  • 湖南平台网站建设制作山西省建设注册中心网站
  • 福州云建站做好网站建设静态化
  • 做个外贸网站多少费用优品ppt官网
  • 网站建设原创空间建设网站
  • 百度添加网站网站呼叫中心 建设工期
  • 织梦程序来搭建网站想开一家网店
  • 临沂网站建设平台扬州百度推广公司
  • 江西港航建设投资有限公司网站seo诊断书
  • app开发和网站开发哪个简单移动互联网推广
  • 有关网站建设的参考文献电子商务公司简介
  • 微擎 网站开发工具钓鱼网站怎么做防护教程
  • 免费申请论坛网站基础建设文本网站
  • 东莞横沥网站设计海口建站
  • 网站开发公司会在最后面加上公司济南智能网站建设报价
  • 网站的关键词库怎么做的那么多wordpress 互动模块
  • 深圳网站建设哪家公司便宜自适应型网站建设哪家好