您的位置:首页 > 其它

队列的链表表示

2012-08-24 20:42 316 查看
/*用链表生成队列,队列是特殊的链表,这允许在尾部插入,队头删除*/
#include <iostream>
using namespace std;
typedef struct Node{
int element;
Node* pNext;
}Node,*LinkList;
typedef struct
{
LinkList head;
LinkList tail;
}Queue;
void InitQueue(Queue& queue)
{
queue.head=(LinkList)malloc(sizeof(Node));
queue.head->pNext=NULL;
queue.tail=queue.head;
}
void EnQueue(Queue& queue,int element)
{
LinkList temp=(LinkList)malloc(sizeof(Node));
temp->element=element;
temp->pNext=NULL;
queue.tail->pNext=temp;
queue.tail=temp;
}
void DeQueue(Queue& queue,int &element)
{
if (queue.head->pNext==queue.tail)
{
element=queue.tail->element;
free(queue.tail);
queue.tail=queue.head;
return;
}
LinkList temp=queue.head->pNext;
element=temp->element;
queue.head->pNext=temp->pNext;
free(temp);
}
int EmptyQueue(Queue queue)
{
if (queue.head==queue.tail)
{
return 1;
}
return 0;
}
void DestroyQueue(Queue& queue)
{
free(queue.head);
queue.head=queue.tail=NULL;
}
void main()
{
Queue queue;
InitQueue(queue);
for (int i=0;i<10;i++)
{
EnQueue(queue,i);
}
while (!EmptyQueue(queue))
{
int temp;
DeQueue(queue,temp);
cout<<temp<<endl;
}
DestroyQueue(queue);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: