用链表实现了队列,完成了队列的入队和出队功能。
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 ",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 ",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 ",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