栈的表示和操作的实现
数据结构课本上的都是伪代码 不能直接运行
但是伪代码的好处还是很多的 便于理解 写作快
实际上稍微改一下就可以了
最重要的还是理解顺序栈这种数据结构
#include "stdio.h"
#include<stdlib.h>
#define maxsize 100
#define overflow 1
#define ok 1
#define error 1
#define SElemType int
#define Status int
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S) //顺序栈的初始化
{
//构造一个空栈S
S.base=new SElemType[maxsize]; //为顺序栈动态分配一个最大容量为maxsize的数组空间
if(!S.base) exit(overflow); //存储分配失败
S.top=S.base; //top初始为base,空栈
S.stacksize=maxsize; //stacksize置为栈的最大容量maxsize
return ok;
}
Status Push(SqStack &S,SElemType e) //顺序栈的入栈
{
//插入元素e为新的栈顶元素
if(S.top-S.base==S.stacksize) return error;//栈满
*S.top++=e; //元素e压入栈顶,栈顶指针加1
return ok;
}
Status Pop(SqStack &S,SElemType &e) //顺序栈的出栈
{
if(S.top==S.base) return error; //栈空
e=*--S.top; //栈顶指针减1,将栈顶元素赋给e
return ok;
}
SElemType GetTop(SqStack S) //取栈顶元素
{
//返回S的栈顶元素,不修改栈顶指针
if(S.top!=S.base) //栈非空
return *(S.top-1); //返回栈顶元素的值,栈顶指针不变
}
int main(int argc, char* argv[])
{
return 0;
}