1. #ifndef _LINKEDQUEUE_H 
  2. #define _LINKEDQUEUE_H 
  3.  
  4. typedef char ElemType; 
  5. typedef struct qnode 
  6.   ElemType data; 
  7.   struct qnode *next; 
  8. }QNode; 
  9.  
  10. typedef struct  
  11.   QNode *front; 
  12.   QNode *rear; 
  13. }LiQueue; 
  14.  
  15. #endif 
  16.  
  17.  
  18. void InitQueue(LiQueue *q) 
  19.   q = (LiQueue *)malloc(sizeof(LiQueue)); 
  20.   q->front = q->rear = NULL; 
  21.  
  22. int QueueEmpty(LiQueue *q) 
  23.   return q->rear == NULL ? 1 : 0;             //因为是从为节点插入的,所以判断为节点就能达到目的 
  24.  
  25. int enQueue(LiQueue *q, ElemType x) 
  26.   QNode *temp = NULL; 
  27.   temp = (QNode *)malloc(sizeof(QNode)); 
  28.   temp->data = x; 
  29.   temp->next = NULL; 
  30.  
  31.   if(q->rear == NULL)  
  32.   {     
  33.     q->front = q->rear = temp; 
  34.     return 1; 
  35.   }else  
  36.   { 
  37.     temp->next = q->rear->next; 
  38.     q->rear->next = temp; 
  39.     q->rear = temp; 
  40.     return 1; 
  41.   } 
  42.  
  43. #include <stdio.h> 
  44. #include "stdlib.h" 
  45.  
  46. typedef struct _queue_node 
  47.   int data; 
  48.   struct _queue_node *next; 
  49. }QUEUE; 
  50.  
  51. QUEUE * rear = NULL, *front = NULL; 
  52.  
  53. int InQueue(int value) 
  54.   QUEUE *temp = (QUEUE *)malloc(sizeof(QUEUE)); 
  55.   if(temp == NULL) return 0; 
  56.   temp->data = value; 
  57.   temp->next = NULL; 
  58.   if(front == NULL) 
  59.     front = temp; 
  60.   else  
  61.     rear->next = temp; 
  62.   rear = temp; 
  63.   return 1; 
  64.  
  65. int OutQueue(int *value) 
  66. {   
  67.   QUEUE *temp = front; 
  68.   if(front == NULL) 
  69.     return 0; 
  70.   *value = front->data; 
  71.   front = front->next; 
  72.   free(temp); 
  73.   return 1; 
  74. void main () 
  75.   int temp; 
  76.    
  77.   while(1) 
  78.   { 
  79.     printf("1 write, 2 read =>\n"); 
  80.     scanf("%d",&temp); 
  81.     fflush(stdin); 
  82.  
  83.     switch(temp) 
  84.     { 
  85.       case 1: 
  86.         printf("输入一个整数 \n"); 
  87.         scanf("%d",&temp);             //此处不可为scanf("%d     ",&temp)    因为%d 后面有 空格 
  88.           fflush(stdin); 
  89.        if(InQueue(temp) ) 
  90.           printf("ok\n"); 
  91.         else 
  92.           printf("fail\n"); 
  93.           
  94.         break
  95.       case 2: 
  96.         if(OutQueue(&temp) ) 
  97.           printf("ok!    value is %d \n",temp);                     
  98.         else           
  99.             printf("fail to read\n");             
  100.         break
  101.          
  102.       default : 
  103.         exit(0); 
  104.     } 
  105.   } 
  106.   
  107.