您的位置:首页 > 其它

队列基本操作 出队与入队

2014-08-01 10:59 501 查看
#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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐