博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的存储结构的实现(C/C++实现)
阅读量:6337 次
发布时间:2019-06-22

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

存档

1 #include "iostream.h" 2 #include 
3 #define max 20 4 typedef char elemtype; 5 #include "stack.h" 6 void main() 7 { 8 stack s; 9 char x;10 cout<<"(1)初始化栈s\n";11 initstack(s);12 cout<<"(2)栈为"<<(stackempty(s)?"空":"非空")<
>x;15 while(x!='#')16 {17 push(s,x);18 cin>>x;19 }20 cout<<"(4)栈为"<<(stackempty(s)?"空":"非空")<
1 struct stack  2 {  3     elemtype *base;//存栈元素  4     elemtype *top;//栈顶指定器  5     int stacksize;//栈的最大容量  6 };  7 void initstack(stack &s)  8 {  9     //构造一个空栈s 10     s.base=new elemtype[max];//malloc()分配存储空间 11     if(!s.base) 12         exit(-2);//#define OVERFLOW -2  13     s.top=s.base;//空栈 14     s.stacksize=max;//栈的存储容量 15 } 16 void clearstack(stack &s) 17 { 18     //清除栈s,使成为空栈 19     s.top=s.base;//空栈栈顶指针和栈底指针相等 20 } 21 int stackempty(stack s) 22 { 23     //若栈s为空栈返回1,否则返回0 24     if(s.top==s.base) 25         return 1;//空栈返回1,非空返回0 26     else 27         return 0; 28 } 29 int stacklength(stack s) 30 { 31     //返回栈的长度 32     return s.top-s.base; 33 } 34 void push(stack &s,elemtype e) 35 { 36     //元素e进栈 37     if(!s.base)//栈不存在的处理 38     { 39         cout<<"栈不存在\n"; 40         return; 41     } 42     if(s.top-s.base>s.stacksize)//栈满的处理 43     { 44         cout<<"栈已满!\n"; 45         return; 46     } 47     *s.top=e;//元素e存进栈顶的位置 48     s.top++;//栈顶指针指向栈顶元素的下一个位置 49 } 50 elemtype pop(stack &s) 51 { 52     //栈s的栈顶元素出栈并返回 53     if(s.base==s.top) 54     { 55         cout<<"栈空,不能出栈\n"; 56         exit(-2); 57     } 58     else 59     { 60         s.top--;//栈顶指针减1,下次进栈,会覆盖当前位置的值,相当于删除 61         return *s.top;//返回栈顶元素的值 62     } 63 } 64 int pop1(stack &s,elemtype &e) 65 { 66     //栈s的栈顶元素出栈并返回 67     if(s.base==s.top) 68     { 69         cout<<"栈空,不能出栈\n"; 70         return 0; 71     } 72     else 73     { 74         s.top--;//栈顶指针减1,下次进栈,会覆盖当前位置的值,相当于删除 75         e=*s.top; 76         return 1;//返回栈顶元素的值 77     } 78 } 79 elemtype gettop(stack s) 80 { 81     //取栈s的当前栈顶元素并返回 82     if(s.top==s.base) 83     { 84         cout<<"栈空,获取栈顶元素失败"<
=0;i--)//总共s.top-s.base个元素,下标范围就是[0...(s.top-s.base-1)]107 cout<
<<" ";108 cout<

运行结果如下:

 

转载地址:http://ecooa.baihongyu.com/

你可能感兴趣的文章
C# DateTime 精确到秒/截断毫秒部分
查看>>
二维数组、字符串互相转换
查看>>
SDUT_线性dp联系结题报告:
查看>>
静态代码
查看>>
在Linux下配置squid[转载,待测试]
查看>>
MVC Music Store
查看>>
笛卡尔树
查看>>
Less动态css-演讲稿(ppt)
查看>>
C#图像处理概述
查看>>
js,cookies做悬浮购物车
查看>>
推荐35款精致的 CSS3 和 HTML5 网页模板
查看>>
TOJ 1036
查看>>
[AX]AX2012 安全模型概览
查看>>
HDU 3651 A Simple Problem
查看>>
CSS样式表继承详解
查看>>
jquery validator c# helper
查看>>
Log4Net使用指南
查看>>
Java VO 是什么?
查看>>
js代码格式化
查看>>
Uva 11292 The Dragon of Loowater(排序后贪心)
查看>>