【数据结构 严蔚敏版】 顺序栈 基本操作

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

#include
#include
#define size 100
#define T 1
#define F 0
using namespace std;
typedef  int  ElemType;
typedef  int  status;

typedef struct stack{
	ElemType *base;//尾指针 
	ElemType *top;//头指针 
	int stacksize;//栈的初始空间大小 
}stack; 
//构造一个栈
 
status Initstack(stack &S)
{
	S.base = (ElemType *)malloc(size*sizeof(ElemType));
	if(!S.base)
	{
	cout<<"分配空间失败!!!"; 
	exit(-1);	
	}
	S.top = S.base;
	S.stacksize = size;
	cout<<"成功构造一个空栈!"<= S.stacksize)
	{
		S.base = (ElemType*)realloc(S.base,(S.stacksize + 1)*sizeof(ElemType));
		if(!S.base)
			exit(-1);
		S.top = S.base+S.stacksize;
		S.stacksize+=1;
	}
	*S.top++ = e;
	cout<<"进栈成功!"<= S.stacksize)
	{
		S.base = (ElemType*)realloc(S.base,(S.stacksize + 1)*sizeof(ElemType));
		if(!S.base)
			exit(-1);
		S.top = S.base+S.stacksize;
		S.stacksize+=1;
	}
	*S.top++ = e;
	return T;
}
status Pop1(stack &S,ElemType &e)
{
	if(S.top ==S.base)
	return -1;
	e = * -- S.top;
	return T;
}
//判空
void Menu()
{
	cout<<"                顺序栈操作                "<>i;
		switch(i){
			case 1:{
				Initstack(S);
				flag=1;
				break;
			}
			case 2:{
				if(flag){
					Destroystack(S);
					flag=0;
					}
				else
					cout<<"你还没初始化一个栈呢!"<>e;
					Push(S, e);
					}
				else
					cout<<"你还没初始化一个栈呢!"<>i;
				cout<<"请输入一个十进制数:";
				cin>>n; 
				cout<

你可能感兴趣的:(数据结构)