本文实例为大家分享了C语言实现链队列的具体代码,供大家参考,具体内容如下
#includetypedef int DataType; #define NODE_LEN sizeof(NODE) typedef struct stNode { DataType data; struct stNode* next; }NODE; typedef struct stQueue { NODE* head; //队列的头 NODE* tail; //队列的尾 }QUEUE; int initQueue(QUEUE* INQueue) { INQueue->head = NULL; INQueue->tail = NULL; return 0; } int enQueue(QUEUE* InQueue,DataType InData) { NODE* pNewNode = (NODE*)malloc(NODE_LEN); if (pNewNode == NULL) { return -1; } pNewNode->data = InData; pNewNode->next = NULL; if (InQueue->head == NULL) { InQueue->head = pNewNode; InQueue->tail = pNewNode; } else { InQueue->tail->next = pNewNode; InQueue->tail = pNewNode; } return 0; } int visitQueue(QUEUE InQueue) { QUEUE* pstTemp = &InQueue; if (pstTemp->head == NULL) { printf("visitQueue: this queue is emptyn"); return -1; } while (pstTemp->head->next != NULL) { printf("%d ", pstTemp->head->data); pstTemp->head = pstTemp->head->next; } printf("%d n", pstTemp->head->data); return 0; } int delQueue(QUEUE* InQueue,DataType* OutData) { if (InQueue->head == NULL) { printf("delQueue: this queue is emptyn"); return -1; } *OutData = InQueue->head->data; NODE* pstTemp = InQueue->head; InQueue->head = InQueue->head->next; delete pstTemp; return 0; } int isEmptyQueue(QUEUE InQueue) { if (InQueue.head == NULL) { return 0; //是空队列 } return 1; //不是空队列 } int main() { QUEUE queue; DataType data; initQueue(&queue); enQueue(&queue, 12); enQueue(&queue, 11); enQueue(&queue, 2); visitQueue(queue); delQueue(&queue, &data); visitQueue(queue); printf("data = %dn", data); visitQueue(queue); if (0 == isEmptyQueue(queue)) { printf("This is empty queuen"); } else { printf("This is not empty queuen"); } return 0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



