数据结构基础之栈
2016-02-06 13:07
429 查看
栈:遵行先进后出
对栈的数据结构的定义保存在SeqStack.h中,代码如下:
对栈的数据结构的定义保存在SeqStack.h中,代码如下:
#define StackSize 100 typedef struct {//线性 DataType stack[StackSize]; int top; }SeqStack; void InitStack(SeqStack *s) {//初始化栈 s->top=0; } int StackEmpty(SeqStack s) {//判断栈是否为空,为空返回1,否则返回0 if(s.top==0) return 1; else return 0; } int GetTop(SeqStack s,DataType *e) {//取栈顶元素,将栈顶元素返回给e,1成功,0失败 if(s.top<=0) { printf("栈已空!\n"); return 0; } else { *e=s.stack[s.top-1]; return 1; } } int PushStack(SeqStack *s,DataType e) {//将元素e压栈,成功返回1,否则为0 if(s->top>=StackSize) { printf("栈已满!\n"); return 0; } else { s->stack[s->top]=e; //元素e进栈 s->top++; return 1; } } int PopStack(SeqStack *s,DataType *e) {//出栈 if(s->top==0) { printf("站中无元素\n"); return 0; } else { s->top--; *e=s->stack[s->top]; //元素e出栈 return 1; } } int StackLength(SeqStack s) {//求栈的长度 return s.top; } void ClearStack(SeqStack *s) { s->top==0; }利用顺序栈,将元素A,B,C,D,E,F依次进栈,然后将F和E出栈,再将G和H进栈,最后全部元素出栈,代码如下:
#include"stdio.h" #include"stdlib.h" typedef char DataType; #include"SeqStack.h" void main() { SeqStack s; int i; DataType a[]={'A','B','C','D','E','F'}; DataType e; InitStack(&s); for(i=0;i<sizeof(a)/sizeof(a[0]);i++) { if(PushStack(&s,a[i])==0) { printf("栈已满"); return; } } printf("出栈依次元素是:"); if(PopStack(&s,&e)==1) printf("%4c",e); //F出栈 if(PopStack(&s,&e)==1) printf("%4c",e); //E出栈 printf("\n"); printf("当前的栈顶元素是:"); if(GetTop(s,&e)==0) { printf("栈已空"); return; } else printf("%4c\n",e); printf("将元素G、H依次进栈\n");//G进栈 if(PushStack(&s,'G')==0) { printf("栈已满"); return; } if(PushStack(&s,'H')==0)//H进栈 { printf("栈已满"); return; } printf("当前栈中的元素个数是:%d\n",StackLength(s)); printf("元素出栈\n"); while(!StackEmpty(s)) { PopStack(&s,&e); printf("%4c",e); } printf("\n"); }参考:《数据结构》——陈锐
相关文章推荐
- 数据结构基础之串
- 数据结构图文解析之:二叉堆详解及C++模板实现
- 数据结构基础之双向链表(约瑟夫问题)
- 数据结构--动态规划
- 数据结构(5)--栈的定义以及相关操作的实现
- 数据结构实验之排序四:寻找大富翁
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序五:归并求逆序数
- 数据结构之单向链表
- 小蚂蚁学习数据结构(30)——图的其他知识点简介
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- 【Redis笔记(六)】 Redis数据结构 - 有序集合zset
- 学习笔记------数据结构(C语言版)队列链式存储
- LinuxC常用数据结构及函数总结
- C++数据结构栈的实现
- Floodlight之 FloodlightContextStore 数据结构
- 单源最短路径之Bellman-Ford 算法
- 数据结构实验之二叉树六:哈夫曼编码
- Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c
- 数据结构之红黑树与平衡二叉树