实验四——顺序栈

来源:互联网 发布:python unpackbits 编辑:程序博客网 时间:2024/05/18 03:04

一、实验目的

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

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


二、实验内容

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

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


三、源代码

seqstack.h

#ifndef seqstack_H#define seqstack_Hconst int Size=5;template<class DataType> class SeqStack{public:SeqStack(){top=-1;}//空栈 ~SeqStack(){}void Push(DataType x);//元素x入栈 DataType Pop();//一次出栈操作 DataType GetTop();//读取栈顶元素 int Empty();private:int top;//栈顶指针,栈顶元素数组下标 DataType data[Size];};#endif

seqstack.cpp

#include<iostream> using namespace std;#include"seqstack.h"template<class DataType> void SeqStack<DataType>::Push(DataType x)//元素x入栈{if(top==Size-1) throw "上溢";top++;data[top]=x;}template<class DataType> DataType SeqStack<DataType>::Pop()//出栈{DataType x;if(top==-1) throw "下溢";x=data[top];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;}

seqstack_main.cpp

#include <iostream>using namespace std;#include"seqstack.cpp"int main(){SeqStack<int> S;if(S.Empty()) cout<<"栈空"<<endl;cout<<"1,2,3,4依次入栈"<<endl;S.Push(1);S.Push(2);S.Push(3);S.Push(4);cout<<"读取栈顶元素:"<<S.GetTop()<<endl;cout<<"执行一次出栈操作:"<<S.Pop()<<endl;cout<<"读取栈顶元素:"<<S.GetTop()<<endl;cout<<"执行一次出栈操作:"<<S.Pop()<<endl;cout<<"读取栈顶元素:"<<S.GetTop()<<endl;cout<<"执行一次出栈操作:"<<S.Pop()<<endl;cout<<"读取栈顶元素:"<<S.GetTop()<<endl;} 


运行结果





原创粉丝点击