<p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">《数据结构》实验三: 栈和队列实验</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">一..实验目的</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;"> 巩固栈和队列数据结构,学会运用栈和队列。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">2.学习运用栈和队列的知识来解决实际问题。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">3.进一步巩固程序调试方法。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">4.进一步巩固模板程序设计。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">二.实验时间</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;"> 准备时间为第5周到第6周,具体集中实验时间为6周第2次课。2个学时。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">三..实验内容</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: SimSun;">1.自己选择顺序或链式存储结构,定义一个空栈类,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。</span></p>
#include<iostream>
using namespace std;
template <class datatype>
struct Node
{
datatype data;
Node<datatype> *next;
};
template <class datatype>
class linkstack
{
public:
linkstack(){top=NULL;}
~linkstack(){while(top!=NULL){Node<datatype> *q=top;top=top->next;delete q;}};
void push(datatype x);
datatype pop();
datatype gettop(){if(top!=NULL)return top->data;}
int Empty(){if(top==NULL)return 1;else return 0;}
private:
Node<datatype>* top;
};
template <class datatype>
datatype linkstack<datatype>::pop()
{
if(top==NULL)throw"xiayi";
datatype x=top->data;
Node<datatype> * p=top;
top=top->next;
delete p;
return x;
}
template <class datatype>
void linkstack<datatype>::push(datatype x)
{
Node<datatype> * s=new Node<datatype>;
s->data=x;
s->next=top;
top=s;
}
void main()
{
linkstack<int> t;
if(t.Empty()==1)cout<<endl<<"栈为空"<<endl;
else cout<<endl<<"栈非空"<<endl;
int r[5];
cout<<endl<<"请对栈赋5个值:"<<endl;
for(int i =0;i<5;i++)
{
cin>>r[i];
}
cout<<endl;
if(t.Empty()==1)cout<<endl<<"栈为空"<<endl;
else cout<<endl<<"栈非空"<<endl;
for(int n =0;n<5;n++)t.push(r[n]);
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
cout<<endl<<"执行一次初栈操作:"<<endl;
t.pop();
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
cout<<endl<<"执行一次初栈操作:"<<endl;
t.pop();
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
}