数据结构课程要求算法-栈
2014-10-12 11:51
253 查看
宏定义部分
栈的定义:
建栈
入栈
出栈
得到栈顶元素
得到栈长
遍历所有
其实,栈和线性表都是通过访问地址得到元素,是常用的数据结构。
#define STACK_INIT_SIZE 100 //栈的初始容量 #define STACKINCREMENT 10 //每次再分配的容量
栈的定义:
typedef struct{ int *base; //栈底 int *top; //栈顶 int stacksize; //当前栈的容量 }SqStack;
建栈
bool InitStack(SqStack &S){ S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); //为栈分配大小为STACK_INIT_SIZE的空间 if(!S.base)return false; //如果分配空间失败,处理 //exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; //初始时,栈顶指针=栈底指针,栈的容量为STACK_INIT_SIZE cout<<"Create stack successfully!"<<endl; return true; }
入栈
bool Push(SqStack &S,int e){ //对空间进行判断,如果空间超过,进行再分配 if(S.top-S.base >= S.stacksize * sizeof(int) ){ S.base=(int *)realloc(S.base,S.stacksize + STACKINCREMENT * sizeof(int)); if(!S.base)return false; //exit(OVERFLOW); //realloc使用后可能会影响栈底base的指针,所以重新寻找栈顶top S.top=S.base+S.stacksize * sizeof(int); S.stacksize += STACKINCREMENT;//栈的容量增加 } //入栈操作 *(S.top)=e; //将e压入 S.top+=sizeof(int); //栈顶指针变化 return true; }
出栈
bool Pop(SqStack &S,int &e){ if(S.top==S.base) { cout<<"empty!"<<endl; return false; } S.top-=sizeof(int); e= *(S.top); return true; }
得到栈顶元素
bool GetTop(SqStack S, int &e) { if(S.top==S.base) { cout<<"empty!"<<endl; return false; } S.top-=sizeof(int); e = *(S.top); }
得到栈长
int StackLength(SqStack S){ return (S.top-S.base)/sizeof(int); }
遍历所有
bool StackTraverse(SqStack S){ if(S.top==S.base) { cout<<"empty!"<<endl; return false; } int *temp; temp=S.base; while(temp < S.top) { //对每一项数据进行的操作 visit(); cout<< *temp<<endl; temp=temp+sizeof(int); } return true; }
其实,栈和线性表都是通过访问地址得到元素,是常用的数据结构。
相关文章推荐
- 数据结构课程要求算法--线性表(1.创建和删除)
- 【课程说明】数据结构与算法课程要求--选课学生必读
- 数据结构教程 第三课 算法及算法设计要求
- C语言 数据结构题目一道 在线等答案~快~试写一符合上述要求的LocateNode运算的算法。
- 数据结构课程设计-----用C#实现双向链表
- 数据结构中关键路径算法的实现与应用
- 数据结构课程设计
- 我要好好学习数据结构与算法
- 数据结构与算法(C#实现)系列---AVLTree(二)(外摘)
- 数据结构课程设计-校园导游系统-带注释
- 数据结构实验要求及源码(C/C++)!
- 数据结构课程设计--------文法分析中推导的建立(第一天进度)
- 数据结构中关键路径算法的实现与应用
- 数据结构教程 第四课 算法效率的度量和存储空间需求
- 数据结构知识——树的三种不同遍历算法解析
- 十四、数据结构相关算法
- (原创)基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- Linux C 函数参考(数据结构及算法)
- java数据结构及算法二