双端顺序栈基本操作
来源:互联网 发布:十一双十一淘宝 编辑:程序博客网 时间:2024/05/14 13:36
#include <stdio.h>#define M 1000typedef char ElemType;typedef struct //定义一个双端顺序栈{ ElemType data[M];//栈区 int top[2];//top[0]和top[1]分别为两个栈顶指示器} SeqStack;void InitStack(SeqStack *s)//创建一个双端顺序栈{ s->top[0]=-1; s->top[1]=M;}bool Push(SeqStack *s, char x,int i)//进栈操作,把数据元素x压入i号栈{ if(s->top[0]+1==s->top[1])//栈已满 return false; switch(i) { case 0://0号栈 s->top[0]++; s->data[s->top[0]]=x; break; case 1://1号栈 s->top[1]--; s->data[s->top[1]]=x; break; default://参数错误 return false; } return true;}bool Pop(SeqStack *s,char *x,int i) //出栈操作,从i号栈中弹出栈顶元素并送到x中{ switch(i) { case 0://0号栈出栈 if(s->top[0]==-1) return false; *x=s->data[s->top[0]]; s->top[0]--; break; case 1://1号栈出栈 if(s->top[1]==M) return false; *x=s->data[s->top[1]]; s->top[1]++; break; default://参数错误 return false; } return true;}int main(void){ SeqStack Seq; SeqStack *s=&Seq; ElemType a; ElemType *e=&a; InitStack(s); printf("a进栈0\n"); Push(s,'a',0); printf("b进栈1\n"); Push(s,'b',1); printf("c进栈0\n"); Push(s,'c',0); printf("d进栈1\n"); Push(s,'d',1); printf("出栈次序:\n"); while(Pop(s,e,0)) printf("%c ",a); printf("\n"); while(Pop(s,e,1)) printf("%c ",a); printf("\n"); return 0;}
阅读全文
1 0
- 双端顺序栈基本操作
- 顺序栈基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作....
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- 顺序栈的基本操作
- [leetcode]581. Shortest Unsorted Continuous Subarray
- 【NGUI】头顶血条(2D与3D的实现)
- ugui优化
- logstash传输文本文件到HDFS
- matlab图像处理相关函数
- 双端顺序栈基本操作
- 装饰模式笔记
- HDU 1213 How Many Tables
- codeforces——466A——Cheap Travel
- javax.mail发送邮件
- 第十三周
- SecCore关键数据结构
- HTML界面应用标签
- 单循环链表的创建、插入删除等操作