#include <iostream>
using namespace std;
#define Maxsize 20
template<typename T>
class Node
{
private:
T *data;
int size;
public:
int top;
Node():top(-1)
{
data=new T [Maxsize];
}
Node(int n):size(n),top(-1)
{
data=new T [size];
}
~Node()
{
delete [] data;
data = NULL;
}
int push(T e)
{
if(top==size-1)
{
cout<<"栈已满"<<endl;
return -1;
}
data[++top]=e;
return 0;
}
int pop()
{
if(top==-1)
{
cout<<"删除失败"<<endl;
return -1;
}
data[top--];
}
void show()
{
for(int i=0;i<=top;i++)
cout<<data[i]<<endl;
}
};
int main()
{
int c;
int size;
cout<<"请输入队列的大小:";
cin>>size;
Node <int>s(size);
for(int i=0;i<size;i++)
{
cout<<"请输入值:"<<endl;
cin>>c;
s.push(c);
}
cout<<"栈的值为:"<<endl;
s.show();
return 0;
}
循环队列
#include <iostream>
using namespace std;
#define Maxsize 20
template<typename T>
class Node
{
private:
T *data;
int size;
public:
int front;
int rear;
Node():size(Maxsize),front(0),rear(0)
{
data=new T [Maxsize];
}
Node(int n):size(n),front(0),rear(0)
{
data=new T [size];
}
~Node()
{
delete [] data;
data = NULL;
}
int loop_enqueue(T e)
{
if(front==(rear+1)%size||data==NULL)
{
cout<<"队列已满"<<endl;
return -1;
}
data[rear]=e;
rear=(rear+1)%size;
return 0;
}
int loop_dequeue()
{
if(front==rear||data==NULL)
{
cout<<"队列已空"<<endl;
}
front=(front+1)%size;
}
void show()
{
if(front==rear)
{
cout<<"队列为空"<<endl;
}
for(int i=0;i!=rear;i=(i+1)%size)
cout<<data[i]<<endl;
}
};
int main()
{
int c;
int size;
cout<<"请输入队列的大小:";
cin>>size;
Node <int>s(size);
for(int i=0;i<size-1;i++)
{
cout<<"请输入值:"<<endl;
cin>>c;
s.loop_enqueue(c);
}
cout<<"栈的值为:"<<endl;
s.show();
return 0;
}