顺序栈的表示与实现
程序员文章站
2022-05-22 22:50:04
顺序栈是指利用顺序存储结构实现的栈,即用一组连续地址的存储单元依次存放到栈底到栈顶的数据元素。 1.顺序栈的存储结构:(这里以存储整数为例) 1 typedef struct{ 2 ElemType data[MAXSIZE];//为顺序栈分配最大容量的内存 3 int top; //指向栈顶 4 ......
顺序栈是指利用顺序存储结构实现的栈,即用一组连续地址的存储单元依次存放到栈底到栈顶的数据元素。
-----------------------------------------------------------------
1.顺序栈的存储结构:(这里以存储整数为例)
1 typedef struct{ 2 elemtype data[maxsize];//为顺序栈分配最大容量的内存 3 int top; //指向栈顶 4 }sqstack;
------------------------------------
2.基本操作
1)初始化:
1 void initstack(sqstack &s) 2 { 3 if(!s.data) exit(-1); //判断是否成功分配内存,如果s.data为null,则分配失败 4 s.top = 0; //使top为零,指向栈底 5 }
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 }
3)出栈:
1 status pop(sqstack &s) 2 { 3 if(s.top<=0) return error; //先判断栈是否空了 4 s.top--; //指针下移 5 return ok; 6 }
4)获得栈顶元素:
1 void gettop(sqstack s) 2 { 3 printf("栈顶元素是 %d\n",s.data[s.top-1]); 4 }
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 }
------------------------------------------------------------------
完整代码:
#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; }
上一篇: [原创] Android ListView 在右上角添加三角形图标和文字
下一篇: Qt坐标系统
推荐阅读
-
从URL中提取参数与将对象转换为URL查询参数的实现代码_javascript技巧
-
CentOS下与Apache连接的PHP多版本共存方案实现详解
-
php实现与erlang的二进制通讯实例解析
-
PHP实现的大文件切割与合并功能示例
-
图的邻接矩阵、邻接表遍历(python实现)(递归与非递归)(dfs bfs)
-
EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码
-
使用CSS3实现多列布局与多背景的技巧
-
php批量添加数据与批量更新数据的实现方法
-
动态分配数组实现的顺序表
-
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。