#include<stdio.h> #include<malloc.h> #include<stdlib.h> #define Data_Type int typedef struct Node{ Data_Type data; struct Node * pNext; }NODE,*PNODE; typedef struct LinkQueue{ //first node PNODE front; //lash node PNODE rear; }LINKQUEUE,*PLINKQUEUE; bool isEmpty(PLINKQUEUE); bool enQueue(PLINKQUEUE,Data_Type); Data_Type deQueue(PLINKQUEUE); void traverse(PLINKQUEUE); PLINKQUEUE initial(); int main(void){ PLINKQUEUE pLinkQueue = initial(); enQueue(pLinkQueue,1); enQueue(pLinkQueue,2); enQueue(pLinkQueue,3); enQueue(pLinkQueue,4); deQueue(pLinkQueue); enQueue(pLinkQueue,5); deQueue(pLinkQueue); traverse(pLinkQueue); return 0; } PLINKQUEUE initial(){ PLINKQUEUE pLinkQueue = (PLINKQUEUE)malloc(sizeof(LINKQUEUE)); if(NULL==pLinkQueue){ exit(-1); }else{ pLinkQueue->front = NULL; pLinkQueue->rear = NULL; return pLinkQueue; } } bool isEmpty(PLINKQUEUE pLinkQueue){ if(pLinkQueue->front == NULL && pLinkQueue->rear == NULL){ return true; }else{ return false; } } bool enQueue(PLINKQUEUE pLinkQueue,Data_Type val){ PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL==pNew){ return false; } pNew->data = val; pNew->pNext = NULL; if(isEmpty(pLinkQueue)){ pLinkQueue->front = pLinkQueue->rear = pNew; }else{ pLinkQueue->rear->pNext = pNew; pLinkQueue->rear = pNew; } return true; } void traverse(PLINKQUEUE pLinkQueue){ PNODE pTemp=pLinkQueue->front; while(pTemp!=NULL){ printf("%d\n",pTemp->data); pTemp = pTemp->pNext; } } Data_Type deQueue(PLINKQUEUE pLinkQueue){ PNODE pTemp =pLinkQueue->front; Data_Type temp; if(isEmpty(pLinkQueue)){ exit(-1); } //The Queue just has one node if(pLinkQueue->front == pLinkQueue->rear){ pLinkQueue->front = pLinkQueue->rear = NULL; }else{ pLinkQueue->front=pLinkQueue->front->pNext; } temp = pTemp->data; free(pTemp); return temp; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u013578413/article/details/47343217