#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"); }
队列基本操作—出队与入队
时间: 2024-10-10 13:13:31