博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构期末复习(いち)--顺序栈定义及使用
阅读量:5287 次
发布时间:2019-06-14

本文共 2295 字,大约阅读时间需要 7 分钟。

1 #include 
2 using namespace std; 3 #define MAXSIZE 100 //顺序栈存储空间初始分配大小 4 #define OK 1 5 #define ERROR 0 6 #define OVERFLOW -1 7 typedef struct //顺序栈结构定义 8 { 9 int *base; //栈底指针 10 int *top; //栈顶指针 11 int stacksize; //栈可使用的最大容量 12 } Sqstack; 13 14 //初始化,构造一个空栈 15 int Init_Stack(Sqstack &s) 16 { 17 s.base = new int[MAXSIZE]; //为顺序栈动态分配一个最大容量为MAXSIZE的数组空间 18 if(!s.base) exit(-1); //分配失败则退出 19 s.top = s.base; //top初始为base,表栈空 20 s.stacksize = MAXSIZE; 21 return 0; 22 } 23 24 //入栈操作 25 int Push_Stack(Sqstack &s, int e) 26 { 27 if(s.top - s.base == s.stacksize) //栈满退出 28 return 1; 29 *s.top++ = e; //将元素e压入栈顶,同时栈顶指针加1 30 //等同于*s.top=e;s.top++; 31 return 0; 32 } 33 34 //出栈操作 35 int Pop_Stack(Sqstack &s) 36 { 37 if(s.top == s.base) return 1; //栈空 38 --s.top; //栈顶指针减1 39 return 0; 40 } 41 42 //取栈顶元素 43 int Get_Top(Sqstack s) 44 { 45 if(s.top != s.base) //栈非空 46 return *(s.top - 1); //栈顶指针不变,返回栈顶元素的值 47 } 48 49 //输出栈 50 void printstack(Sqstack s) 51 { 52 while((s.top != s.base)) //栈非空 53 { 54 cout << Get_Top(s) << " "; 55 Pop_Stack(s); 56 } 57 cout << endl; 58 } 59 60 int main() 61 { 62 Sqstack s; 63 Init_Stack(s); 64 for (int i = 0; i < 10; ++i) 65 { 66 Push_Stack(s, i); 67 } 68 int a, b; 69 cout << "1--print,2--pop,3--push,0--exit\n"; 70 for(int i = 0; i < 4; ++i) 71 { 72 cin >> a; 73 if (a == 1) 74 { 75 printstack(s); 76 } 77 else if (a == 3) 78 { 79 cout << "元栈为:"; 80 printstack(s); 81 cout << "请输入要插入的数:"; 82 cin >> b; 83 Push_Stack(s, b); 84 cout << "插入后栈为:"; 85 printstack(s); 86 } 87 else if (a == 2) 88 { 89 cout << "元栈为:"; 90 printstack(s); 91 //cout<<"请输入要插入的数:"; 92 //cin>>b; 93 Pop_Stack(s); 94 cout << "pop后栈为:"; 95 printstack(s); 96 } 97 else if (a == 0) 98 { 99 return 0;100 }101 }102 return 0;103 }

 

转载于:https://www.cnblogs.com/DSYR/p/9162601.html

你可能感兴趣的文章
Upload Image to .NET Core 2.1 API
查看>>
Linux中防火墙centos
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
程序存储问题
查看>>
优雅地书写回调——Promise
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
css & input type & search icon
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
c# 文件笔记
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>