链式实现相对于顺序实现麻烦了点,但是好处也是显而易见的,链式就没有了空间限制是最大的优点。下面就给出实现代码:
主类:
struct Node
{
int data;
Node *next;
};
class LinkQueue
{
Node *fronts,*rear;//一个头指针,一个尾指针
public:
LinkQueue();
~LinkQueue();
void pushin(int x);//进
int GetQueue();//获取头数据
int DeQueue();//出
bool isempty();//判断
};
功能实现代码:
构造函数
LinkQueue::LinkQueue()
{
fronts=new Node;
fronts->next=NULL;
rear=fronts;
}
析构函数
LinkQueue::~LinkQueue()
{
Node *p;
while(fronts)
{
p=fronts->next;
delete fronts;
fronts=p;
}
}
进队列
void LinkQueue::pushin(int x)
{
Node *s=new Node;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
出队列
int LinkQueue::DeQueue()
{
if(fronts==rear)
{
cout<<"为空";
}
else
{
Node *p=fronts->next;
int xx=p->data;
fronts->next=p->next;
delete p;
if(fronts->next==NULL)
{
rear=fronts;
}
return xx;
}
}
获取头数据
int LinkQueue::GetQueue()
{
if(fronts->next)
{
Node *s=fronts->next;
return s->data;
}
else
{
cout<<"为空";
}
}
判断是否为空
bool LinkQueue::isempty()
{
if(fronts==rear)
{
return true;
}
else
{
return false;
}
}
这就是完整的代码,希望给大家有所帮助!