链队的基本操作:
1,存储结构:
2,创建链式队列:
3,队尾插入,队首删除:
4,遍历操作:
typedef int QElemType;
typedef struct node
{
int data;
struct node *next;
}QNode,*QueuePre;
typedef struct
{
QueuePre Front;
QueuePre rear;
}LinkQueue;
void CreatQueue(LinkQueue &Q)
{
Q.rear=(QueuePre)malloc(sizeof(QNode));
Q.Front=Q.rear;
if(!Q.Front) exit(-2);
Q.rear->next=NULL;
}
void EnQueue(LinkQueue &Q,int e)
{
QueuePre p;
p=(QueuePre)malloc(sizeof(QNode));
if(!p) exit(-2);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
void DeleQueue(LinkQueue &Q,int &e)
{
QueuePre p;
if(Q.Front==Q.rear) return ;
p=Q.Front->next;
e=p->data;
Q.Front->next=p->next;
if(Q.rear==p) Q.rear=Q.Front;
free(p);
}
void TraverseQueue(LinkQueue &Q)
{
if(Q.rear==Q.Front) return;
QueuePre p;
p=Q.Front->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}