实验三顺序栈

一、实验目的

1、   熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、      学会使用栈和队列解决实际问题。

二、实验内容

1、自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

#include<iostream>
using namespace std;
const int stacksize=10;
template<typename T>
class Seqstack
{
	public:
		Seqstack();
		~Seqstack(){}
		void Push(T x);
		T Pop();
		T GetTop();
		int Empty();
	private:
		T data[stacksize];
		int top;
};
template<typename T>
Seqstack<T>::Seqstack()
{
	top=-1;
}
template<typename T>
void Seqstack<T>::Push(T x)
{
	if(top==stacksize-1)throw"上溢";
	top++;
	data[top]=x;
}
template<typename T>
T Seqstack<T>::Pop()
{
	T x;
	if(top==-1)throw"下溢";
	x=data[top--];
	return x;
}
template<typename T>
T Seqstack<T>::GetTop()
{
	if(top!=-1)
		return data[top];
}
template<class T>
int Seqstack<T>::Empty()
{
	if(top==-1)return 1;
	else return 0;
}
void main()
{
	Seqstack<int>S;//创建模板类的实例
	if(S.Empty())
		cout<<"栈为空"<<endl;
	else 
		cout<<"栈非空"<<endl;
	cout<<"1,2入栈"<<endl;
	S.Push(1);
	S.Push(2);
	cout<<"栈顶元素为:"<<endl;
	cout<<S.GetTop()<<endl;
	cout<<"一次出栈"<<endl;
	S.Pop();
	cout<<"栈顶元素为:"<<endl;
	cout<<S.GetTop()<<endl;
}


猜你喜欢

转载自blog.csdn.net/Sing___546/article/details/78267783