1 #include"stdio.h" 2 #include"stdlib.h" 3 typedef int DataType; 4 typedef struct Seq 5 { 6 DataType data;//数据存储 7 struct Seq *next;//指向下一个节点的指针 8 }SeqList; 9 typedef struct 10 { 11 SeqList *front; 12 SeqList *rear;//定义头尾指针 13 }Link; 14 void initQueue(Link *s) 15 { 16 17 s->front = s->rear = (SeqList*)malloc(sizeof(SeqList)); 18 } 19 //进队 20 void inQueue(Link *s, DataType x) 21 { 22 SeqList *p = (SeqList*)malloc(sizeof(SeqList));//创建一个新节点 23 p->data = x; 24 p->next = NULL; 25 if(s->front == NULL) s->front = p;//判断该队列中是否有元素 26 else s->rear->next = p; 27 s->rear = p; 28 } 29 //出队 30 void outQueue(Link *s, DataType *x) 31 { 32 if(s->front == NULL) 33 { 34 printf("该队列为空"); 35 } 36 else 37 { 38 SeqList *p = s->front; 39 *x = p->data; 40 s->front = s->front->next;//将队头移动到队头的下一个 41 if(s->front ==NULL) s->rear=NULL;//如果队头等于空的话那队尾也就等于空 42 free(p); 43 } 44 } 45 void printQueue(Link *s) 46 { 47 SeqList *p = s->front; 48 if(s->front == NULL) printf("该队列为空"); 49 else 50 { 51 while(p!=NULL) 52 { 53 printf("%d\n",p->data); 54 p = p->next; 55 } 56 } 57 } 58 main() 59 { 60 Link s; 61 initQueue(&s); 62 s.front = NULL; 63 s.rear = NULL; 64 inQueue(&s,1); 65 inQueue(&s,2); 66 inQueue(&s,3); 67 printQueue(&s); 68 69 }