实验二 链队列

#include<iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};


class LinkQueue
{
public:
LinkQueue();
~LinkQueue();
void EnQueue(int x);
int DeQueue();
int GetQueue();
int Empty();
private:
Node *front,*rear;
};


LinkQueue::LinkQueue()
{
Node *s=NULL;
s=new Node;
s->next=NULL;
front=rear=s;
}


LinkQueue::~LinkQueue()
{
Node *p=NULL;
while(front!=NULL)
{
p=front->next;
delete front;
front=p;
}
}


void LinkQueue::EnQueue(int x)
{
Node *s=NULL;
s=new Node;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}


int LinkQueue::DeQueue()
{
Node *p=NULL;
int x;
if(rear==front)throw"下溢";
p=front->next;
x=p->data;
front->next=p->next;
if(p->next==NULL)rear=front;
delete p;
return x;
}


int LinkQueue::GetQueue()
{
if(front!=rear)
return front->next->data;
}


int LinkQueue::Empty()
{
if(front==rear)
return 1;
else 
return 0;
}


int main()
{
LinkQueue L;
cout<<"******************"<<endl;
cout<<"      链队列"<<endl;
cout<<"******************"<<endl;
cout<<endl;
cout<<"@队列的属性为:"<<endl;
if(L.Empty())
cout<<"队列非空"<<endl;
else
cout<<"队列为空"<<endl;
cout<<endl;
cout<<"@对1和2执行入队操作"<<endl;
L.EnQueue(1);
L.EnQueue(2);
cout<<endl;
cout<<"@查看队头元素"<<endl;
cout<<L.GetQueue()<<endl;
cout<<endl;
cout<<"@执行一次出队操作"<<endl;
L.DeQueue();
cout<<endl;
cout<<"@查看队头元素"<<endl;
cout<<L.GetQueue()<<endl;
return 0;

}


猜你喜欢

转载自blog.csdn.net/laufen_j/article/details/80081935