顺序栈

来源:互联网 发布:网上免费打电话软件 编辑:程序博客网 时间:2024/06/01 09:40

                                                         顺序栈的操作

一、实验目的

掌握栈的顺序存储结构

验证顺序栈的基本操作

验证栈的特性

二、实验步骤

在工程中新建一个头文件SeqStack.h,gai 头文件包括顺序栈类SeqStack的定义

#ifndef SeqStack_H#define SeqStack_Hconst int StackSize = 10;template<class DataType>class SeqStack{public:SeqStack();~SeqStack() {}void Push(DataType x);  //x入栈DataType Pop();   //将栈顶元素弹出DataType GetTop();  //取栈顶元素int Empty();  //判断栈是否为空void Print();//遍历栈private:DataType data[StackSize];  //存放栈元素的数组int top;                   //栈顶指针,指示栈顶元素在数组中的下标};#endif


新建一个源程序文件SeqStack.cpp,该文件包括类SeqStack中成员函数的定义


#include"SeqStack.h"template<class DataType>SeqStack<DataType>::SeqStack(){top = -1;}template<class DataType>void SeqStack<DataType>::Push(DataType x){if (top == StackSize - 1)throw"上溢";top++;data[top] = x;}template<class DataType>DataType SeqStack<DataType>::Pop(){DataType x;if (top == -1)throw"下溢";x = data[top--];return x;}template<class DataType>DataType SeqStack<DataType>::GetTop(){if (top != -1)return data[top];}template<class DataType>int SeqStack<DataType>::Empty(){if (top == -1)return 1;else return 0;}template<class DataType>void SeqStack<DataType>::Print(){if (Empty()){};for (int num = 0; num <= top; num++) {cout << data[num] << "" << endl;}}


再建一个源程序文件SeqStack_main.cpp,该文件包括主函数

#include<iostream>using namespace std;            //引入输入输出流#include"SeqStack.cpp"           //引入类SeqStack的成员函数定义void main() {SeqStack<int>S;if (S.Empty())cout << "当前栈空" << '\n' << endl;else cout << "当前栈非空" << '\n' <<endl;cout << "将1,2,3,4执行入栈操作"<<endl;S.Push(1);S.Push(2);S.Push(3);S.Push(4);cout << "栈中元素为:"<< endl;S.Print();cout << "栈顶元素为:" << S.GetTop() << '\n' << endl;cout << "执行一次出栈操作"  << endl;S.Pop();cout << "栈中元素为:" << endl;S.Print();}


结果

三、实验心得

1.空满判断:top指示栈顶元素在数组中的位置,栈满的时候top=StackSize-1,栈空的时候top=-1。

2.什么时候先用后加(减),什么时候先加(减)后用?

入栈时先判断栈是否满,若有空位,插入的时候指针top先往上移,再存入值,所以插入data[++top]=x,top先加再用。

出栈先判断是否为空,若非空返回的数值即弹出栈的元素是当前top指向位置的值,return data[top],再把栈的指针往下移一位top=top-1,所以若非空,return data[top--],top先用再减。

3.遍历这里写的从栈底开始

4.总出现发现意外的文件尾,怎么办?


原创粉丝点击