- #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-11-03 19:00:08 发布