顺序栈的基本操作实现
2011-10-15 00:17
357 查看
这些都是头函数里的内容,也就是保存之后,可以直接
对其进行调用。其中的一个变量stacklen是用来记录栈
的长度的,其实,这个变量可以不要,只是刚开始写时
给它加上了,所以就按这样写了,感觉跟顺序表的写法
差不多
对其进行调用。其中的一个变量stacklen是用来记录栈
的长度的,其实,这个变量可以不要,只是刚开始写时
给它加上了,所以就按这样写了,感觉跟顺序表的写法
差不多
#include<iostream> #include<stdlib.h> #include<malloc.h> using namespace std; typedef int Status; typedef int SElemType; # define OK 1 # define ERROR 0 # define TRUE 1 # define FLASE 0 # define NULL 0 # define OVERFLOW -2 typedef struct{ SElemType * base; SElemType * top; int stacksize; int stacklen; }SqStack; # define STACK_INIT_SIZE 100 //存储空间的初始分配量 # define STACKINCREMENT 10 //存储空间分配增量 Status InitStack(SqStack &S) //构造一个空栈S { S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base; S.stacksize = STACK_INIT_SIZE; S.stacklen = 0; return OK; } Status DestroyStack(SqStack &S) //销毁栈S,S不在存在 { free(S.base); return OK; } Status ClearStack (SqStack &S) //把S置为空栈 { S.top = S.base; S.stacklen = 0; return OK; } Status StackEmpty(SqStack &S) //若S为空栈,则返回TRUE,否则返回FALSE { if(S.stacklen == 0) return TRUE; else return FLASE; } Status StackLength(SqStack &S) //返回S的元素个数,即栈的长度 { return S.stacklen; } Status GetTop(SqStack &S, SElemType &e) //若栈不空,则用e返回S的栈顶元素, { if(S.stacklen == 0) return ERROR; else { e = * (S.top-1); return OK; } } Status Push(SqStack &S, SElemType &e) //插入元素e为新的栈顶元素 { if(S.stacklen == S.stacksize) { S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } * S.top++ = e; S.stacklen++; return OK; } Status Pop(SqStack &S, SElemType &e) //删除栈顶元素并用e返回其值 { if(S.stacklen == 0) return ERROR; e = * --S.top; S.stacklen--; return OK; } Status DisplayStack(SqStack &S) //从栈底到栈顶依次对栈的元素进行访问 { SElemType * p; p = S.base; while(p != S.top) { cout<<*p<<" "; p++; } cout<<endl; return OK; }
相关文章推荐
- 顺序队列及链队列的基本操作实现
- 利用顺序结构实现线性表的基本操作
- 顺序线性表的基本操作(C语言实现)
- 顺序表的基本操作用C 语言实现
- 顺序表的基本操作实现
- 实现基于静态数组的顺序表的以下基本操作(进阶部分)
- 二叉树基本操作实现(二叉树的顺序存储)
- 顺序队列的基本操作实现c++
- 静态数组顺序表的基本操作实现
- c语言实现顺序表的基本操作
- C语言实现----顺序表的基本操作(1)
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的
- 顺序表----12个基本操作实现
- 顺序表实现栈的基本操作
- 1044 顺序栈基本操作的实现
- 数据结构-顺序线性表基本操作实现
- 实验三 顺序栈的基本操作实现及其应用
- 实现基于静态数组的顺序表的以下基本操作:
- 【数据结构实验】实验二 顺序表的基本操作的实现