顺序栈的实现

一、实验目的

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

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

二、实验内容

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

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

 

三、源代码

#SeqStack.h文件

 

const int StackSize = 10;
template<class T>
class SeqStack
{
public:
	SeqStack(); //构造函数,初始化一个空栈
	~SeqStack(); //析构函数为空
	void Push(T x);//入栈操作,将元素X入栈
	T Pop(); //出栈操作,将栈顶元素弹出
	T GetTop();//取栈顶元素
	int Empty();//判断栈是否为空
	void PrintStack(); //遍历栈喔
private:
	T data[StackSize]; //存放栈元素的数组
	int top;//栈顶指针,为栈顶元素在数组中的下标
};

#SeqStack.cpp文件

#include"SeqStack.h"
template<class T>
SeqStack<T>::SeqStack()
{
	top = -1;
}
template<class T>
SeqStack<T>::~SeqStack()
{
}
template<class T>
void SeqStack<T>::Push(T x)
{
	if (top == StackSize - 1)
		throw "上溢";
	data[++top] = x;
}
template<class T>
T SeqStack<T>::Pop()
{
	if (top == -1)
		throw "下溢";
	top--;
	return data[top];
}
template<class 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;
}
template<class T>
void SeqStack<T>::PrintStack()
{
	for (int i = top; i>=0; i--)
	{
		cout << data[i] << " ";
	}
	cout << endl;
}

源.cpp文件

 

 

#include"SeqStack.cpp"
#include<iostream>
using namespace std;
int main(void)
{
	SeqStack<int> s1;
	s1.Push(5);
	s1.Push(7);
	s1.Push(9);
	cout << "该顺序栈从栈顶到栈底的顺序为:";
	s1.PrintStack();
	cout<<"该顺序栈栈顶元素为:"<<s1.GetTop()<<endl;
	cout <<"该栈是否为空:"<< s1.Empty() << endl;
	s1.Pop();
	cout << "出栈一个元素后,该顺序栈从栈顶到栈底的顺序为:";
	s1.PrintStack();
	system("pause");
	return 0;
}

 

实验截图如下:

 

四、实验心得

顺序栈的实验蛮简单的,很快就能完成,没遇到什么挑战。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值