C語言實(shí)現(xiàn)鏈隊(duì)列代碼
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)鏈隊(duì)列的具體代碼,供大家參考,具體內(nèi)容如下
#include <stdio.h> /* 隊(duì)列的結(jié)構(gòu)體 */ typedef int DataType; #define NODE_LEN sizeof(NODE) /* 隊(duì)列的節(jié)點(diǎn) */ typedef struct stNode { DataType data; struct stNode* next; }NODE; /* 隊(duì)列 */ typedef struct stQueue { NODE* head; //隊(duì)列的頭 NODE* tail; //隊(duì)列的尾 }QUEUE; /* 初始化隊(duì)列,不帶頭結(jié)點(diǎn)*/ int initQueue(QUEUE* INQueue) { INQueue->head = NULL; INQueue->tail = NULL; return 0; } /* 從隊(duì)尾插入一個(gè)元素 */ int enQueue(QUEUE* InQueue,DataType InData) { NODE* pNewNode = (NODE*)malloc(NODE_LEN); if (pNewNode == NULL) { return -1; } pNewNode->data = InData; pNewNode->next = NULL; /* 判斷,現(xiàn)在隊(duì)列里面有沒有節(jié)點(diǎn) */ if (InQueue->head == NULL) { InQueue->head = pNewNode; InQueue->tail = pNewNode; } else { InQueue->tail->next = pNewNode; InQueue->tail = pNewNode; } return 0; } /* 遍歷該隊(duì)列 */ int visitQueue(QUEUE InQueue) { QUEUE* pstTemp = &InQueue; /* 判斷隊(duì)列是否為空隊(duì)列 */ if (pstTemp->head == NULL) { printf("visitQueue: this queue is empty\n"); return -1; } /* 遍歷該隊(duì)列中的所有元素 */ while (pstTemp->head->next != NULL) { printf("%d ", pstTemp->head->data); pstTemp->head = pstTemp->head->next; } printf("%d \n", pstTemp->head->data); return 0; } /* 出隊(duì)列 */ int delQueue(QUEUE* InQueue,DataType* OutData) { if (InQueue->head == NULL) { printf("delQueue: this queue is empty\n"); return -1; } *OutData = InQueue->head->data; NODE* pstTemp = InQueue->head; InQueue->head = InQueue->head->next; delete pstTemp; return 0; } /* 判斷隊(duì)列是否是空隊(duì)列 */ int isEmptyQueue(QUEUE InQueue) { if (InQueue.head == NULL) { return 0; //是空隊(duì)列 } return 1; //不是空隊(duì)列 } int main() { /* 創(chuàng)建一個(gè)隊(duì)列 */ QUEUE queue; DataType data; initQueue(&queue); /* 入隊(duì)列 */ enQueue(&queue, 12); enQueue(&queue, 11); enQueue(&queue, 2); visitQueue(queue); /* 出隊(duì)列 */ delQueue(&queue, &data); visitQueue(queue); printf("data = %d\n", data); visitQueue(queue); if (0 == isEmptyQueue(queue)) { printf("This is empty queue\n"); } else { printf("This is not empty queue\n"); } return 0; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問題解析
- C語言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例
- C語言數(shù)據(jù)結(jié)構(gòu)進(jìn)階之棧和隊(duì)列的實(shí)現(xiàn)
- C語言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作
- C語言實(shí)現(xiàn)鏈隊(duì)列基本操作
- C語言實(shí)現(xiàn)循環(huán)隊(duì)列
- C語言版實(shí)現(xiàn)鏈隊(duì)列
- C語言實(shí)現(xiàn)鏈隊(duì)列
- C語言?隊(duì)列的實(shí)現(xiàn)全解析
相關(guān)文章
C++定義和初始化string對(duì)象實(shí)例詳解
這篇文章主要為大家介紹了C++定義和初始化string對(duì)象實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12聊聊Qt+OpenCV聯(lián)合開發(fā)之圖像的創(chuàng)建與賦值問題
這篇文章主要介紹了Qt+OpenCV聯(lián)合開發(fā)之圖像的創(chuàng)建與賦值問題,給大家介紹了圖像的克隆及拷貝問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01C++ 中國(guó)象棋的實(shí)現(xiàn)流程詳解
中國(guó)象棋是起源于中國(guó)的一種棋,屬于二人對(duì)抗性游戲的一種,在中國(guó)有著悠久的歷史。由于用具簡(jiǎn)單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動(dòng)2021-11-11OpenCV實(shí)現(xiàn)幀差法檢測(cè)運(yùn)動(dòng)目標(biāo)
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)幀差法檢測(cè)運(yùn)動(dòng)目標(biāo),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03C++中fstream,ifstream及ofstream用法淺析
這篇文章主要介紹了C++中fstream,ifstream及ofstream用法,適合C++初學(xué)者學(xué)習(xí)文件流的操作,需要的朋友可以參考下2014-08-08C語言中static的作用及C語言中使用靜態(tài)函數(shù)有何好處
在C語言中,static的作用有三條:一是隱藏功能,二是保持持久性功能,三是默認(rèn)初始化為0。本文重點(diǎn)給大家介紹C語言中static的作用及c語言中使用靜態(tài)函數(shù)有何好處,對(duì)本文感興趣的朋友一起看看吧2015-11-11strings命令分析淺談Go和C++編譯時(shí)的一點(diǎn)小區(qū)別
今天小編就為大家分享一篇關(guān)于strings命令分析淺談Go和C++編譯時(shí)的一點(diǎn)小區(qū)別,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04