#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node *next;
}NODE;
typedef struct qnode{
NODE *front;
NODE *rear;
}QNODE;
void InitQueue(QNODE *Q){
NODE *p;
p=(NODE *)malloc(sizeof(NODE));
Q->front=p;
Q->front->next=NULL;
Q->rear=Q->front;
printf("The init is complete!");
}
void *QueuePush(QNODE *Q){
NODE *p; p=(NODE *)malloc(sizeof(NODE));
printf("Please input a number :");
scanf("%d",&p->data);
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
printf("The %d has been pushed into the Queue!",p->data);
return 0;
}
void *QueuePop(QNODE *Q){
NODE *p;
if(Q->front->next==NULL) return 0;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p) Q->rear=Q->front;
printf("The %d has been pop from the queue! /n",p->data);
free(p);
return 0;
}
void *PrintQueue(QNODE *Q){
NODE *p;
p=Q->front->next;
while(p!=NULL){
printf("%5d",p->data);
p=p->next;}
return 0;
}
void main(){
QNODE *T;
int i=0;
printf("1.InitQueue 2.QueuePush 3.QueuePop 4.PrintQueue 5.Quit /n");
while(i!=5){
printf("Please choose the gongneng:");
scanf("%d",&i);
printf("/n");
switch(i){
case 1: InitQueue(T); printf("/n"); break;
case 2: QueuePush(T); printf("/n"); break;
case 3: QueuePop(T); printf("/n"); break;
case 4: printf("The queue's numbers are:");
PrintQueue(T); printf("/n"); break;
case 5: printf("/n"); break;}
}
}