利用链式存储结构实现一个队列,完成结构体的定义,以及入队函数,出队函数和主程序的编写。其中入队函数将键盘输入的整数存入队列的末尾;出队函数将队列最前面的元素打印到屏幕;入队和出队的人数可以由键盘指定。
#include<iostream>
using namespace std;
template<typename DataType>
struct Node
{
DataType data;
struct Node* next;
};
template<typename DataType>
class LinkStack
{
public:
LinkStack();
~LinkStack();
void Push();
DataType Pop();
DataType GetTop();
int Empty();
private:
Node<DataType> * top;
};
template<typename DataType>
void LinkStack<DataType>::Push()
{
int b;
cout<<"请输入入队数字:"<<endl;
cin>>b;
Node<DataType>*s = nullptr;
s = new Node<DataType>;s->data = b;
s->next = top;top = s;
}
template<typename DataType>
DataType LinkStack<DataType>::Pop()
{
Node<DataType>*p = nullptr;
DataType x;
if(top == nullptr)throw"下溢";
x = top->data;p = top;
top = top->next;
delete p;
cout<<"出队元素为:"<<endl;
cout<<x<<endl;
}
template<typename DataType>
DataType LinkStack<DataType>::GetTop()
{
}
template<typename DataType>
LinkStack<DataType>::LinkStack()
{
}
template<typename DataType>
LinkStack<DataType>::~LinkStack(){}
template<typename DataType>
LinkStack<DataType>::Empty()
{
}
int main()
{
int x;
int c = 0;
LinkStack<int>S{};
while(1){
cout<<"请选择功能:"<<endl;
cout<<"1:入队"<<endl;
cout<<"2:出队"<<endl;
cout<<"0:退出"<<endl;
cin>>x;
switch(x)
{
case 1:S.Push();c = c+1;break;
case 2:c = c-1;if(c == -1){cout<<"队列为空!";return 0;}S.Pop();break;
case 0:return 0;break;
}
}
return 0;
}