顺序栈的建立及操作

问题:建立顺序栈还是比较简单的。主要是一开始在入栈操作中每次调用初始化栈函数,结构出错。

 

代码:

#include <iostream>

#include <cstdlib>

using namespace std;

#define MAXSIZE 20

typedef struct SeqStack

{

	int stack [MAXSIZE];

	int top;

}*stackNode;



void initStack(stackNode &stack)

{

	stack=(stackNode)malloc(sizeof(struct SeqStack));

    if(!stack)

	{

		cout<<"allocate fail"<<endl;

		exit(EXIT_FAILURE);

	}

	else

	{

		stack->top=-1;

	}

}



void pushStack(stackNode stack,int elem)

{

	 if(stack->top==MAXSIZE)

	 {

		 cout<<"stack is full"<<endl;

		 exit(0);

	 }

	 else

	 {

		 stack->stack[++(stack->top)]=elem;

	 }

}



int  popStack(stackNode stack)

{

	int elem;

	if(stack->top==-1)

	{

		cout<<"栈已空"<<endl;

		return -1;

	}

	elem=stack->stack[stack->top];

	--stack->top;



	return elem;

}



int topStack(stackNode stack)

{

	int top;

	if(stack->top==-1)

	{

		cout<<"栈已空"<<endl;

		return -1;

	}

	top=stack->stack[stack->top];



	return top;

}



void showStack(stackNode stack)

{

	if(stack->top==-1)

	{

		cout<<"栈已空"<<endl;

		exit(-1);

	}

	while(stack->top!=-1)

	{

		cout<<stack->stack[stack->top]<<"--";

		--stack->top;

	}

	cout<<endl;

}



int main()

{

	stackNode stack=NULL;

	int top;

	int arr[]={1,3,5,6,7,2,9,8};

	initStack(stack);

	cout<<"入栈:"<<endl;

	for(int i=0;i<8;i++)

	{

		pushStack(stack,arr[i]);

	}



	top=topStack(stack);

	cout<<"top="<<top<<endl;



	cout<<"出栈元素为"<<popStack(stack)<<endl;

    cout<<"出栈元素为"<<popStack(stack)<<endl;



	cout<<"入栈:"<<endl;

	pushStack(stack,16);

	pushStack(stack,19);



	top=topStack(stack);

	cout<<"top="<<top<<endl;

	cout<<"遍历栈中的元素:";

	showStack(stack);

	return 0;

}

运行截图:

顺序栈的建立及操作

你可能感兴趣的:(顺序)