顺序栈的表示与实现
2019-10-25 06:26:00来源:博客园 阅读 ()
顺序栈的表示与实现
顺序栈是指利用顺序存储结构实现的栈,即用一组连续地址的存储单元依次存放到栈底到栈顶的数据元素。
-----------------------------------------------------------------
1.顺序栈的存储结构:(这里以存储整数为例)
1 typedef struct{ 2 ElemType data[MAXSIZE];//为顺序栈分配最大容量的内存 3 int top; //指向栈顶 4 }SqStack;View Code
------------------------------------
2.基本操作
1)初始化:
1 void Initstack(SqStack &S) 2 { 3 if(!S.data) exit(-1); //判断是否成功分配内存,如果S.data为NULL,则分配失败 4 S.top = 0; //使top为零,指向栈底 5 }View Code
2)入栈:
1 Status Push(SqStack &S,ElemType e) 2 { 3 if(S.top==MAXSIZE) return ERROR; //判断是否栈满 4 S.data[S.top++] = e; //赋值 5 return OK; 6 }View Code
3)出栈:
1 Status Pop(SqStack &S) 2 { 3 if(S.top<=0) return ERROR; //先判断栈是否空了 4 S.top--; //指针下移 5 return OK; 6 }View Code
4)获得栈顶元素:
1 void getTop(SqStack S) 2 { 3 printf("栈顶元素是 %d\n",S.data[S.top-1]); 4 }View Code
5)遍历(这个大都会用到,不算其基本操作):
1 void traverse(SqStack S) 2 { 3 printf("遍历结果:\n"); 4 for(int i=0;i<S.top;i++) 5 { 6 printf("%d ",S.data[i]); 7 } 8 printf("\n"); 9 }View Code
------------------------------------------------------------------
完整代码:
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 #define ERROR 0 #define OK 1 typedef int Status; typedef int ElemType; typedef struct{ ElemType data[MAXSIZE];//为顺序栈分配最大容量的内存 int top; //指向栈顶 }SqStack; void Initstack(SqStack &S) { if(!S.data) exit(-1); S.top = 0; } Status Push(SqStack &S,ElemType e) { if(S.top==MAXSIZE) return ERROR; S.data[S.top++] = e; return OK; } Status Pop(SqStack &S) { if(S.top<=0) return ERROR; S.top--; return OK; } void getTop(SqStack S) { printf("栈顶元素是 %d\n",S.data[S.top-1]); } void traverse(SqStack S) { printf("遍历结果:\n"); for(int i=0;i<S.top;i++) { printf("%d ",S.data[i]); } printf("\n"); } int main() { SqStack S; Initstack(S); int n; Push(S,3); Push(S,4); Push(S,5); Push(S,7); Push(S,8); traverse(S); Pop(S); Pop(S); getTop(S); traverse(S); return 0; }View Code
原文链接:https://www.cnblogs.com/wwww2/p/11711576.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:一个有趣的C语言问题
下一篇:c++11多线程记录0
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- opencv-12-高斯滤波-双边滤波(附C++代码实现) 2020-05-10
- 二叉排序树 2020-05-02
- 抽象宠物类的实现 代码参考 2020-04-29
- 虚函数实现多态性 代码参考 2020-04-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash