C語(yǔ)言實(shí)現(xiàn)鏈隊(duì)列
記錄一下C語(yǔ)言實(shí)現(xiàn)的鏈隊(duì)列代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef int ElemType; //鏈隊(duì)列的結(jié)點(diǎn)定義 typedef struct node{ ElemType val; struct node* next; }QueueNode; //鏈隊(duì)列的定義,包含隊(duì)頭指針和隊(duì)尾指針 typedef struct queue { QueueNode* front; QueueNode* rear; }LinkedQueue; //初始化隊(duì)列 LinkedQueue* initQueue() { LinkedQueue* queue = (LinkedQueue*)malloc(sizeof(LinkedQueue)); queue->front = (QueueNode*)malloc(sizeof(QueueNode)); queue->front->next = NULL; queue->rear = queue->front; } //元素入隊(duì) void enQueue(LinkedQueue* queue, ElemType elem) { QueueNode* node = (QueueNode*)malloc(sizeof(QueueNode)); node->val = elem; node->next = NULL; queue->rear->next = node; queue->rear = node; } //隊(duì)列是否為空 bool isQueueEmpty(LinkedQueue* queue) { return queue->front == queue->rear; } //元素出隊(duì) ElemType deQueue(LinkedQueue* queue) { if(!isQueueEmpty(queue)) { QueueNode* p = queue->front; queue->front = p->next; ElemType e = queue->front->val; free(p); return e; } return NULL; } int main() { LinkedQueue* queue = initQueue(); int i; for(i = 0; i < 20; i++) { enQueue(queue, i); } while(!isQueueEmpty(queue)) { printf("deQueue: %d\n", deQueue(queue)); } return 0; }
需要注意的是:
- 初始化隊(duì)列時(shí),隊(duì)頭和隊(duì)尾都指向同一個(gè)結(jié)點(diǎn)(頭結(jié)點(diǎn),不存儲(chǔ)數(shù)據(jù));
- 判斷隊(duì)列是否為空,即判斷隊(duì)頭指針和隊(duì)尾指針是否相同;
- 隊(duì)頭元素是當(dāng)前front指針的next結(jié)點(diǎn)中的值
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問(wèn)題解析
- C語(yǔ)言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)進(jìn)階之棧和隊(duì)列的實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作
- C語(yǔ)言實(shí)現(xiàn)鏈隊(duì)列基本操作
- C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列
- C語(yǔ)言版實(shí)現(xiàn)鏈隊(duì)列
- C語(yǔ)言實(shí)現(xiàn)鏈隊(duì)列代碼
- C語(yǔ)言?隊(duì)列的實(shí)現(xiàn)全解析
相關(guān)文章
解決Devc++運(yùn)行窗口中文亂碼的實(shí)現(xiàn)步驟
本文主要介紹了如何解決Devc++運(yùn)行窗口中文亂碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C++聚合體初始化aggregate initialization詳細(xì)介紹
這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對(duì)象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法2023-02-02C++實(shí)現(xiàn)LeetCode(171.求Excel表列序號(hào))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(171.求Excel表列序號(hào)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C++實(shí)現(xiàn)評(píng)教管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)評(píng)教管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Cocos2d-x中背景音樂(lè)和音效使用實(shí)例
這篇文章主要介紹了Cocos2d-x中背景音樂(lè)和音效使用實(shí)例,注意本文中使用大量注釋來(lái)說(shuō)明背景音樂(lè)和音效的使用方法,需要的朋友可以參考下2014-09-09海量數(shù)據(jù)處理系列之:用C++實(shí)現(xiàn)Bitmap算法
本篇文章是對(duì)用C++實(shí)現(xiàn)Bitmap算法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器c/c++代碼
語(yǔ)音相關(guān)的好多項(xiàng)目要在linux上跑,但代碼開(kāi)發(fā)大多是在PC機(jī)上,本篇簡(jiǎn)單介紹一下怎么在個(gè)人電腦上用VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器上的c/c++代碼。感興趣的朋友跟隨小編一起看看吧2020-04-04