用两个栈实现一个队列
来源:互联网 发布:oracle数据迁移方式 编辑:程序博客网 时间:2024/06/07 15:02
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 10typedef struct _seqstack{int data[MAXSIZE];int top;}seqstack;int Initstack(seqstack *s)//置空栈{s->top = -1;return 0;}int Display(seqstack *s)//显示队列{int n = 0;if(s->top == -1){printf("队为空");}else{while(s->top >= n){printf("%d ",s->data[n]);n++;}}return 0;}int inqueue(int num,seqstack *s1,seqstack *s2)//进队列{if(s1->top == MAXSIZE - 1)//s1为满栈{printf("full\n");}else {if(s2->top != -1)//s1不是满栈且s2不是空栈{while(s2->top > -1){s1->data[++s1->top] = s2->data[s2->top--];}s1->data[++s1->top] = num;}else//s1不是满栈且s2是空栈{s1->top++;s1->data[s1->top] = num;}}return 0;}int dequeue(seqstack *s1,seqstack *s2)//出队列{if(s2->top != -1)//s2不是空栈,直接弹出栈顶元素{printf("%d ",s2->data[s2->top--]);}else//如果s2空栈且s1不是空栈,把s1元素倒入s2中{if(s1->top != -1){while (s1->top != -1){s2->data[++s2->top] = s1->data[s1->top--];printf("%d ",s2->data[s2->top--]);}}else//如果s1和s2都是空栈{printf("empty\n");}}return 0;}int main(){int i,j;int select;int choice = 1;int num;int account;seqstack s1;seqstack s2;Initstack(&s1);//将两个栈置空Initstack(&s2);while(1){printf("选择操作:1.in 2.out 3.exit \n");scanf("%d",&select);switch(select){case 1:{printf("输入元素个数:");scanf("%d",&account);printf("输入数字:");for(i = 0;i < account;i++){scanf("%d",&num);inqueue(num,&s1,&s2);}printf("队列中数据如下:");Display(&s1);printf("\n");break;}case 2:{printf("出队的元素:");dequeue(&s1,&s2);printf("\n");break;}case 3:exit(0);break;}}return 0;}
阅读全文
0 0
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现一个队列
- 用两个栈实现一个队列
- 用两个栈实现一个队列
- 用两个队列实现一个栈
- 用两个栈实现一个队列功能
- 用两个栈实现一个队列
- 用两个队列实现一个栈
- 用两个栈实现一个队列
- 用两个队列实现一个栈
- 用两个栈来实现一个队列
- 用两个栈实现一个队列功能
- 用两个队列实现一个栈
- 用两个队列实现一个栈
- 用两个栈实现一个队列
- 用两个栈实现一个队列
- 用两个栈实现一个队列
- 心情之向上
- Python--matplotlib绘图可视化知识点整理
- 判断一个数是否为质数
- 判断一个树为完全二叉树
- zookeeper安装和伪分布式集群安装
- 用两个栈实现一个队列
- 强大的柔型数组
- ThreadLocal 的理解
- 几种常见的排序(一)
- 通信录工具类
- JDK源码解析之ArrayList
- please remove installation media and close the tray (if any) then press ENTER
- 设计模式之合成复用原则
- RXD's date