實驗二:順序棧,鏈棧,順序佇列,鏈佇列
阿新 • • 發佈:2019-01-31
#include<iostream.h>
const int QueueSize=100;
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;
s=new Node;s->next=NULL;
front=rear=s;
}
void LinkQueue::EnQueue(int x)
{
Node *s;
s=new Node;s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
int LinkQueue::DeQueue()
{
Node *p;
int x;
if(rear==front)
cout<<"佇列為空"<<endl;
p=front->next;x=p->data;
front->next=p->next;
if(p->next==NULL) rear=front;
delete p;
return x;
}
int LinkQueue::GetQueue()
{
return front->next->data;
}
int LinkQueue::Empty()
{
if(front==rear)
return 1;
else return 0;
}
void main()
{
LinkQueue Q;
if(Q.Empty())
cout<<"佇列為空"<<endl;
else
cout<<"佇列非空"<<endl;
cout<<"元素15和10執行入隊操作"<<endl;
Q.EnQueue(10);
Q.EnQueue(15);
cout<<"隊頭元素為"<<endl;
cout<<Q.GetQueue()<<endl;
cout<<"執行出隊操作"<<endl;
Q.DeQueue();
cout<<"隊頭元素為"<<endl;
cout<<Q.GetQueue()<<endl;
}
const int QueueSize=100;
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;
s=new Node;s->next=NULL;
front=rear=s;
}
void LinkQueue::EnQueue(int x)
{
Node *s;
s=new Node;s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
int LinkQueue::DeQueue()
{
Node *p;
int x;
if(rear==front)
cout<<"佇列為空"<<endl;
p=front->next;x=p->data;
front->next=p->next;
if(p->next==NULL) rear=front;
delete p;
return x;
}
int LinkQueue::GetQueue()
{
return front->next->data;
}
int LinkQueue::Empty()
{
if(front==rear)
return 1;
else return 0;
}
void main()
{
LinkQueue Q;
if(Q.Empty())
cout<<"佇列為空"<<endl;
else
cout<<"佇列非空"<<endl;
cout<<"元素15和10執行入隊操作"<<endl;
Q.EnQueue(10);
Q.EnQueue(15);
cout<<"隊頭元素為"<<endl;
cout<<Q.GetQueue()<<endl;
cout<<"執行出隊操作"<<endl;
Q.DeQueue();
cout<<"隊頭元素為"<<endl;
cout<<Q.GetQueue()<<endl;
}