数据结构|顺序栈的实现(实验3.1)

一、实验目的

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

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

二、实验内容

1、自己确定结点的具体数据类型和问题规模,建立一个顺序栈,实现栈的压栈和出栈操作。

三、实验步骤

1、依据实验内容分别说明实验程序中用到的数据类型的定义;

 

template < typename T >
class SeqStack{
	public:
		SeqStack() {top = -1;}  //构造函数,初始化一个空栈
		~SeqStack() {}   //析构函数为空
		void push(T x);   //入栈操作,将元素x入栈
		T pop();      //出栈操作,将栈顶元素弹出
		T get() { if(top!=-1) return data[top]; }  //取栈顶元素(不删除)
		bool Empty() { return top == - 1 ? true : false; }  //判断栈是否为空
		bool Full()  { return top == StackSize - 1 ? true : false; }  //判断是否栈满
		void print();  //遍历操作
	private:  
		T data[StackSize];  //存放栈元素的数组
		int top;   //栈顶指针,为栈顶元素在数组中的下标
};

 

 

 

2、相关操作的算法表达;

  2.1、构造函数,初始化一个空栈

  2.2、入栈操作函数:①.判断是否栈满,若是则返回,否则 
              ②.先栈顶指针 top 往上移一位,再在该位存储数据

  2.3、出栈操作函数:①判断是否栈空,若是则返回 -1,否则 
              ②先返回栈顶指针 top 指向的位置的值,再把栈顶指针 top 往下移一位

  2.4、输出操作函数:按照顺序,输出栈元素。

3、完整程序;

 

由于结点元素类型不确定,因此采用C++模板机制。

源代码如下:

#include
using namespace std;

const int StackSize = 10 ;

template < typename T >
class SeqStack{
	public:
		SeqStack() {top = -1;}  //构造函数,初始化一个空栈
		~SeqStack() {}   //析构函数为空
		void push(T x);   //入栈操作,将元素x入栈
		T pop();      //出栈操作,将栈顶元素弹出
		T get() { if(top!=-1) return data[top]; }  //取栈顶元素(不删除)
		bool Empty() { return top == - 1 ? true : false; }  //判断栈是否为空
		bool Full()  { return top == StackSize - 1 ? true : false; }  //判断是否栈满
		void print();  //遍历操作
	private:  
		T data[StackSize];  //存放栈元素的数组
		int top;   //栈顶指针,为栈顶元素在数组中的下标
};

template< typename T >
void SeqStack::push(T x)
{
	if(Full()){              //判断是否栈满入栈: 
        cout<<"栈满!"<
T SeqStack::pop()
{
	T x;
	if(Empty()){             //判断是否栈空出栈
 * 1.判断是否栈空,若是则返回 -1,否则 
 * 2.先返回栈顶指针 top 指向的位置的值,再把栈顶指针 top 往下移一位
        cout<<"栈空!"<
void SeqStack::print()
{
	for( int i=0 ; i<=top ; i++)
	{  cout<a;
	cout<<"按顺序把“1,2,3,4,5”推进栈"<

 

4、总结、运行结果和分析。

 

①总结

   在程序内定义对象为int型,将元素1~5按顺序入栈。

   通过调用成员函数,实现入栈、出栈、输出等基本功能。

         ②运行结果如下:

 

数据结构|顺序栈的实现(实验3.1)_第1张图片

 

5、总体收获和不足,疑问等。

  本次试验较为简单,因为实验内容较少,且对书本知识掌握得有点熟悉。但本次试验还是发现了自己的不足之处。经过改进、询问同学,成功完成了实验。收获颇丰。总的来说,我对理论知识有了更充分的理解,也能较大程度明白运行原理。

你可能感兴趣的:(算法与数据结构)