数据结构(C语言实现)之堆栈(顺序栈)

栈的表示和操作的实现

数据结构课本上的都是伪代码 不能直接运行

但是伪代码的好处还是很多的  便于理解 写作快

实际上稍微改一下就可以了

最重要的还是理解顺序栈这种数据结构

#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;
}

猜你喜欢

转载自blog.csdn.net/sdwujk160507140150/article/details/80048530