- /*
- 实验4:输入一组整型元素序列,建立一个链队,实现该链队的入队和出队操作。
- */
- #include<stdio.h>
- #include<stdlib.h>
- #define OK 1;
- #define ERROR 0;
- typedef int Status;
- typedef int QElemType;
- typedef struct QNode{
- QElemType data;
- struct QNode *next;
- }QNode,*QueuePtr;
- typedef struct {
- QueuePtr front;
- QueuePtr rear;
- }LinkQueue;
- QueuePtr p;
- //初始化链栈
- Status InitQueue(LinkQueue &Q){
- Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
- if(!Q.front)
- exit(0);
- Q.front->next = NULL;
- return OK;
- }
- //删除链栈
- Status DestroyQueue(LinkQueue &Q){
- while(Q.front){
- Q.rear = Q.front->next;
- free(Q.front);
- Q.front = Q.rear;
- }
- return OK;
- }
- //进链栈
- Status EnQueue(LinkQueue &Q,QElemType e){
- p = (QueuePtr)malloc(sizeof(QNode));
- if(!p)
- exit(0);
- p->data = e;
- p->next = NULL;
- Q.rear -> next = p;
- Q.rear = p;
- return OK;
- }
- //出链栈
- Status DeQueue(LinkQueue &Q,QElemType &e){
- if(Q.front == Q.rear)
- return ERROR;
- p = Q.front ->next;
- e = p->data;
- Q.front ->next = p->next;
- if(Q.rear == p)
- Q.rear = Q.front;
- free(p);
- return OK;
- }
- void main(){
- LinkQueue q;
- printf("初始化链队\n");
- int i,x;
- InitQueue(q);
- printf("初始化链队成功!\n");
- printf("请输入入链队的数据:\n");
- for(i=1;i<=3;i++)
- {
- scanf("%d",&x);
- EnQueue(q,x);
- }
- printf("入链队成功!");
- printf("以下为出栈数据:\n");
- for(i=1;i<=3;i++)
- {
- DeQueue(q,x);
- printf("%4d",x);
- }
- printf("\n");
- printf("end!\n");
- }
By Mr.Z