两个顺序栈实现顺序队列功能
来源:互联网 发布:公务员可以开淘宝店吗 编辑:程序博客网 时间:2024/05/16 05:52
设有2个栈s1和s2,入队操作时,将将元素压入栈s1;出队操作时,将s1中的元素(从栈顶到栈底)压入s2(此时s1为空栈),s2中的栈顶元素出栈,则实现出队功能;将s2中余下的元素(从栈顶到栈底)全部压入s1(此时s2为空栈)。
代码实现如下:
// 2Stack_Queue.cpp : 定义控制台应用程序的入口点。//用2个顺序栈实现顺序队列功能#include "stdafx.h"#include <iostream>using namespace std;typedef char type;#define Max 100//栈结点typedef struct stack{ type data[Max]; int top;//栈顶指针}stack,*pStack;//初始化栈void InitStack(pStack s){s->top=-1;}//清空栈void ClearStack(pStack s){s->top=-1;}//入栈操作void Push(pStack s, type data){//判断栈是否满if(Max-1==s->top){ exit(-1);}s->data[++s->top]=data;}//出栈操作type Pop(pStack s){if(-1==s->top)//栈为空{ exit(-1);}return s->data[s->top--];}//入队操作void EnterQueue(pStack s1,type data){Push(s1,data); //栈底到栈顶相当与队首到队尾}//出队操作type DelQueue(pStack s1,pStack s2){ClearStack(s2); //将栈s2清空while(s1->top>=0) //将栈s1中的元素逆序压入栈s2中 压完后,s1->top=-1 相当于s1为空栈{Push(s2,s1->data[s1->top--]);}type temp=Pop(s2); //s2栈顶元素出栈 此元素为队列队首元素while(s2->top>=0) //将栈s2中余下的元素逆序压回栈s1中 压完后,s2为空栈{ Push(s1,s2->data[s2->top--]);}return temp;}//打印队列 从队首到队尾void PrintQueue(pStack s1){int length=s1->top+1;if(0==length){ exit(-1);}int j=0;while(length){ cout<<s1->data[j++]<<" ";length--;} cout<<endl;}int _tmain(int argc, _TCHAR* argv[]){type a[5]={'a','b','c','d','e'};stack s1,s2;InitStack(&s1);InitStack(&s2);for(int i=0;i<5;i++)EnterQueue(&s1,a[i]);PrintQueue(&s1);cout<<"出队元素: "<<DelQueue(&s1,&s2)<<endl;PrintQueue(&s1);return 0;}
0 0
- 两个顺序栈实现顺序队列功能
- 顺序表实现队列-栈
- 数组实现顺序队列、顺序循环队列
- 两个栈实现队列功能
- 两个队列实现栈功能
- 顺序队列的实现
- 顺序队列的实现
- 顺序队列的实现
- 顺序队列的实现
- C++实现顺序队列
- 实现顺序队列
- 顺序存储队列实现
- 顺序队列的实现
- Java实现顺序队列
- 顺序队列的实现
- 顺序栈和顺序队列
- 队列的实现:顺序队列
- 队列---顺序队列及其实现
- 01.ViewPager使用Demo
- 2014任重道远的SEO行程
- iOS键盘设置相关
- 铜梁安居古镇建西部第一芦苇荡 打造5A级景区
- 软件项目管理六要素
- 两个顺序栈实现顺序队列功能
- Scripts:查询数据库中参数文件的信息(在重新建库或者克隆数据库时经常使用)dba_cr_init.sql
- 2014acm亚洲区域赛陕西赛总结
- 每日一个知识点1-2014/5/26
- Oracle中使用pl/sql工具进行数据库的的导入导出
- [leetcode]Container With Most Water
- 51单片机应用从零开始(2)
- [ACM] poj 1258 Agri-Net (最小生成树)
- 盘点10种局域网联机游戏