#include<stdio.h>
#include<stdlib.h>
typedef struct QNode
{ //构造结点类型
int data;
struct QNode *next;
}*QueuePtr;
typedef struct
{ QueuePtr front;
QueuePtr rear;
}LinkQueue;
void CreateQueue(LinkQueue &Q);//创建队列
void EnQueue(LinkQueue &Q,int e);//插入元素进队
void DeQueue(LinkQueue &Q);//删除队头元素
void PrintfQueue(LinkQueue &Q);//输出队列
void DestroyQueue(LinkQueue &Q);//销毁队列
void main()
{ LinkQueue Qa;
int m,n;
CreateQueue(Qa);
printf("Please input the total of inserting number:\n");
scanf("%d",&m);
while(m--)
{ printf("Please input a number to insert:");
scanf("%d",&n);
EnQueue(Qa,n);
}
PrintfQueue(Qa);
DeQueue(Qa);
PrintfQueue(Qa);
DestroyQueue(Qa);
}
void CreateQueue(LinkQueue &Q)
{ Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
{ printf("Fail to create queue!\n");
return;
}
Q.front->next=NULL;
printf("Success to create queue!\n");
}
void EnQueue(LinkQueue &Q,int e)
{ QueuePtr p;
if(!(p=(QueuePtr)malloc(sizeof(QNode))))
{ printf("Fail to insert element!\n");
return;
}
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
printf("Success to insert element:%d\n",e);
}
void DeQueue(LinkQueue &Q)
{ QueuePtr q;
int x;
if(Q.rear==Q.front)
{ printf("the queue is empty!\n");
return;
}
q=Q.front->next;
x=q->data;
Q.front->next=q->next;
if(Q.rear==q)
Q.rear=Q.front;
free(q);
printf("Success to delete element:%d\n",x);
}
void DestroyQueue(LinkQueue &Q)
{ while(Q.front)
{ Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
printf("Success to destroy queue!\n");
}
void PrintfQueue(LinkQueue &Q)
{ QueuePtr p;
if(Q.rear==Q.front)
{ printf("The queue is empty!\n");
return;
}
printf("The queue is:");
p=Q.front->next;
while(p)
{ printf("%d",p->data);
p=p->next;
}
printf("\n");
}
原文地址:http://blog.csdn.net/lucienduan/article/details/38333223