c语言编程之队列(链表实现)

       用链表实现了队列,完成了队列的入队和出队功能。

  1 #include"stdio.h"
  2 
  3 typedef int element;
  4 
  5 typedef struct Node{
  6         struct Node *next;
  7         element data;
  8 }*pNode;
  9 
 10 typedef struct QNode{
 11         pNode front,rear;
 12 }*Linknode;
 13 
 14 //init a empty queue
 15 element Init_queue(Linknode *pLinknode)
 16         {
 17            Linknode P;
 18            P=*pLinknode;
 19            P->front=P->rear=(pNode)malloc(sizeof(struct Node));
 20            P->front->next=P->rear->next=NULL;
 21         }
 22 
 23 //add a data to queue rear
 24 element Add_queue(Linknode *pLinknode,int num)
 25         {
 26           Linknode P;
 27           P=*pLinknode;
 28           pNode s=(pNode)malloc(sizeof(struct Node));
 29           s->data=num;
 30           s->next=NULL;
 31           P->rear->next=s;
 32           P->rear=s;
 33           printf("add data:%d\n",P->rear->data);
 34         }
 35 
 36 //delet a data from queue front
 37 element Delet_queue(Linknode *pLinknode)
 38         {
 39           if(((*pLinknode)->front)==((*pLinknode)->rear))
 40                 {
 41                         printf("queue is empty!!");
 42                         return 0;
 43                 }
 44           Linknode P;
 45           pNode k;
 46           P=*pLinknode;
 47           k=P->front->next;
 48           P->front->next=k->next;
 49           printf("delet data:%d\n",k->data);
 50           free(k);
 51           return 0;
 52         }
 53 
 54 element Print_queue(Linknode pLinknode)
 55         {
 56           pNode p;
 57           p=pLinknode->front;
 58           while(p!=pLinknode->rear)
 59                 {
 60                   p=p->next;
 61                   printf("data:%d\n",p->data);
 62                 }
 63         }
 64 element main()
 65         {
 66           Linknode pQnode;
 67           pQnode=(Linknode)malloc(sizeof(struct QNode));
 68           Init_queue(&pQnode);
 69           Add_queue(&pQnode,99);
 70           Add_queue(&pQnode,11);
 71           Add_queue(&pQnode,22);
 72           Add_queue(&pQnode,33);
 73           Add_queue(&pQnode,44);
 74           Add_queue(&pQnode,55);
 75           Print_queue(pQnode);
 76           Delet_queue(&pQnode);
 77           Delet_queue(&pQnode);
 78           Delet_queue(&pQnode);
 79           Print_queue(pQnode);
 80           return 0;
 81         }
 82 

 

posted on 2016-08-18 15:12  FREEH  阅读(455)  评论(0编辑  收藏  举报