实验三之顺序栈

#include<iostream>
using namespace std;
const int Stacksize=10;
template<class T>
class Seqstack{
public:
	Seqstack(){top=-1;}
	~Seqstack(){}
	void Push(T x);
	T Pop();
	T Gettop()
	{if(top!=-1) return data[top];}
	int Empty()
	{return(top==-1);}
	int Full()
	{return(top==Stacksize-1);}
	void Print();
private:
	T data[Stacksize];
	int top;
};
template<class T>
void Seqstack<T>::Push(T x)
{
	if(top==Stacksize-1) throw"栈已满,停止进栈";
	++top;
	data[top]=x;
}
template<class T>
T Seqstack<T>::Pop()
{
	if(top==-1) throw"栈为空!出栈失败";
	int x=data[top];
	top--;
	return x;
}
template<class T>
void Seqstack<T>::Print()
{
	if(top==-1) throw"栈内无元素!";
		for(int i=0;i<top;i++)
		{cout<<data[i]<<"     ";}
		cout<<endl;
}
int main()
{
	cout<<"创建一个顺序栈:"<<endl;
	Seqstack<int> s;
	if(s.Empty())
		cout<<"栈为空"<<endl;
	else if(s.Full())
		cout<<"栈已满"<<endl;
	else
		cout<<"栈中已有元素,且栈未满"<<endl;
	cout<<"向栈中分别插入1,2,3,4,5,6,7,8,9:"<<endl;
	s.Push(1);
	s.Push(2);
	s.Push(3);
	s.Push(4);
	s.Push(5);
	s.Push(6);
	s.Push(7);
	s.Push(8);
	s.Push(9);
	cout<<"完成入栈操作!此时栈中元素有:"<<endl;
	s.Print();
	cout<<"取出栈顶元素为:"<<s.Gettop()<<endl;
	s.Pop();
	cout<<"执行完一次出栈操作后的结果为:"<<endl;
	s.Print();
	return 0;
}

一、实验目的

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


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

二、实验内容

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


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

、实验结果截图



四、实验心得

        初次进行栈相关的实现操作,这次选择的是简单的几个数据的进栈和出栈的操作实现。从自己亲自的编码实现功能中发现自己所以为的“对理论知识大概理解了”其实是自己很大的错误认识,没有实践过真的没想到自己对知识的掌握程度是那么地低。编写程序的时候对栈的一些实现语句的构成及运行原理其实都还很模糊,需要花较长的时间和较多的途径去理解和编译。
        其中,自己的这个程序其实还存在一些需要改善的地方,但是由于自己的认识有限,暂时也只能做到这个程度了,希望经过接下来的接触和学习,可以自行将自己的程序完善。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值