天天看點

堆棧-線性存儲(出棧和入棧操作)

利用數組實作線性表的資料存儲

//線性存儲的棧的入棧和出棧
#include <iostream>
using namespace std;
#define MAX_SIZE 100//堆棧的容量

typedef struct SqStack
{
	int data[MAX_SIZE];
	int top;//用于指向棧頂元素的下标
}SqStack;
//建立一個空棧
SqStack* CreateEmptyStack()
{
	SqStack *s=(SqStack*)malloc(sizeof(SqStack));
	s->top=-1;
	return s;
}
//入棧
SqStack* PushStack(SqStack *s,int data)
{
	s->data[++(s->top)]=data;
	return s;
}
//出棧
SqStack* PopStack(SqStack *s)
{
	//檢測堆棧内是否有元素
	if (-1==s->top)
	{
		cout<<"The stack is empty!"<<endl;
	}
	int data=s->data[(s->top)--];
	cout<<data<<"->";
	return s;
}
int main()
{
	SqStack *s=CreateEmptyStack();
	for (int i=1;i<=10;i++)
	{
		s=PushStack(s,i);
	}
	for (int i=1;i<=10;i++)
	{
		PopStack(s);
	}
	return 0;
}