C語言實現(xiàn)鏈隊列
更新時間:2018年07月23日 08:34:08 作者:yubo_725
這篇文章主要為大家詳細介紹了C語言實現(xiàn)鏈隊列,具有一定的參考價值,感興趣的小伙伴們可以參考一下
記錄一下C語言實現(xiàn)的鏈隊列代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef int ElemType; //鏈隊列的結(jié)點定義 typedef struct node{ ElemType val; struct node* next; }QueueNode; //鏈隊列的定義,包含隊頭指針和隊尾指針 typedef struct queue { QueueNode* front; QueueNode* rear; }LinkedQueue; //初始化隊列 LinkedQueue* initQueue() { LinkedQueue* queue = (LinkedQueue*)malloc(sizeof(LinkedQueue)); queue->front = (QueueNode*)malloc(sizeof(QueueNode)); queue->front->next = NULL; queue->rear = queue->front; } //元素入隊 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; } //隊列是否為空 bool isQueueEmpty(LinkedQueue* queue) { return queue->front == queue->rear; } //元素出隊 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; }
需要注意的是:
- 初始化隊列時,隊頭和隊尾都指向同一個結(jié)點(頭結(jié)點,不存儲數(shù)據(jù));
- 判斷隊列是否為空,即判斷隊頭指針和隊尾指針是否相同;
- 隊頭元素是當(dāng)前front指針的next結(jié)點中的值
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++聚合體初始化aggregate initialization詳細介紹
這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法2023-02-02C++實現(xiàn)LeetCode(171.求Excel表列序號)
這篇文章主要介紹了C++實現(xiàn)LeetCode(171.求Excel表列序號),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08海量數(shù)據(jù)處理系列之:用C++實現(xiàn)Bitmap算法
本篇文章是對用C++實現(xiàn)Bitmap算法進行了詳細的分析介紹,需要的朋友參考下2013-05-05VSCode遠程開發(fā)調(diào)試服務(wù)器c/c++代碼
語音相關(guān)的好多項目要在linux上跑,但代碼開發(fā)大多是在PC機上,本篇簡單介紹一下怎么在個人電腦上用VSCode遠程開發(fā)調(diào)試服務(wù)器上的c/c++代碼。感興趣的朋友跟隨小編一起看看吧2020-04-04