日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

队列的链式存储结构及实现

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 队列的链式存储结构及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隊列的鏈式存儲結構,其實就是線性表的單鏈表,只不過它只是尾進頭出而已,我們把它簡稱為鏈隊列為了操作上的方便,我們將隊頭指針指向鏈隊列的頭結點,而隊尾指針指向終端節點。如果



空隊列時,front和rear都指向頭結點。



入隊操作:

在隊尾添加元素,先將隊尾元素的next指向添加的元素,然后將隊尾指針重新指向新的隊尾即可。


出隊操作:

頭結結點指向的結點即為隊頭結點,出隊操作,就是把隊頭結點干掉,先把頭結點指向新的隊頭結點(也就是舊的隊頭結點的后繼結點),然后釋放舊的隊頭結點。 如果鏈表除頭結點外只剩一個元素時,則需將rear指向頭結點即可


下面是隊列鏈式存儲結構實現的具體代碼:

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #define QUEUESIZE 10 #define ERROR 0 #define OK 1 #define TRUE 1 #define FALSE 0 #define EleType int #define Status int //鏈隊列結點 typedef struct QueueNode {EleType e;//數據域struct QueueNode* next;//指針域 }QueueNode,*LinkQueuePoi; typedef struct LinkQueue {LinkQueuePoi front;//指向頭結點LinkQueuePoi rear;//指向隊尾 }LinkQueue; /* 初始化鏈隊列 鏈隊列為空時,鏈隊列隊頭指針隊尾指針均指向頭結點 */ Status InitLinkQueue(LinkQueue* queue) {//空指針if (!queue){return ERROR;}QueueNode* node = (QueueNode*)malloc(sizeof(QueueNode));//頭結點node->next = NULL;queue->front = queue->rear = node;return OK; } /* 清空鏈隊列 將所有元素釋放 */ Status CleaerLinkQueue(LinkQueue* queue) {//空指針if (!queue){return ERROR;}//空鏈隊列if (queue->front == queue->rear){return ERROR;}QueueNode* node = queue->front->next;//隊頭元素while (node){queue->front->next = node->next;//指向新的隊頭結點if (queue->rear == node)//當刪除的是隊尾元素時,將隊尾指針指向頭結點{queue->rear = queue->front;}free(node);//釋放舊的隊頭結點node = queue->front->next;}return OK; } /* 判斷鏈隊列是否為空隊列 */ Status EmptyLinkQueue(LinkQueue* queue) {//空指針if (!queue){return ERROR;}//空鏈隊列if (queue->front == queue->rear){return TRUE;}return FALSE; } /* 獲取鏈隊列長度 */ int LengthLinkQueue(LinkQueue* queue) {//空指針if (!queue){return ERROR;}//空鏈隊列if (queue->front == queue->rear){return 0;}QueueNode* node = queue->front->next;int num = 0;while (node){node = node->next;num++;}return num; } /* 在鏈隊列隊尾添加元素 先將新元素添加到鏈表尾部,然后將隊列尾指針指向這個新元素 */ Status AddQueue(LinkQueue* queue,EleType e) {//空指針if (!queue){return ERROR;}QueueNode* node = (QueueNode*)malloc(sizeof(QueueNode));if (!node){return ERROR;}node->next = NULL;node->e = e;queue->rear->next = node;//將新結點添加到鏈表表中queue->rear = node;//隊尾指針指向新的隊尾結點return OK; } /* 從鏈隊列中刪除隊頭元素 先將頭結結點指向新的隊頭結點,然后釋放原來的隊頭結點 */ Status DelQueue(LinkQueue* queue, EleType *e) {//空指針if (!queue){return ERROR;}//注意queue->front是頭結點,頭結點指向的結點才是隊頭結點QueueNode* node = queue->front->next;//舊隊頭結點*e = node->e;queue->front->next = node->next;//隊頭指針指向新的隊頭結點//當刪除的是隊尾元素時,將隊尾指針指向頭結點if (node = queue->rear){queue->rear = queue->front;}return OK; } /* 打印鏈隊列元素 */ void PrintfLinkQueue(LinkQueue* queue) {if (!queue){return;}QueueNode* node = queue->front->next;while (node){printf("%d,", node->e);node = node->next;}printf("\n");return; } int main(int argc, char *argv[]) {LinkQueue queue;InitLinkQueue(&queue);AddQueue(&queue, 1);AddQueue(&queue, 2);AddQueue(&queue, 3);AddQueue(&queue, 4);AddQueue(&queue, 5);AddQueue(&queue, 6);AddQueue(&queue, 7);AddQueue(&queue, 8);AddQueue(&queue, 9);printf("鏈隊列元素個數:%d\n",LengthLinkQueue(&queue));printf("展示元素:\n");PrintfLinkQueue(&queue);int e1, e2;DelQueue(&queue, &e1);DelQueue(&queue, &e2);printf("刪除元素:%d,%d\n", e1, e2);printf("展示元素:\n");PrintfLinkQueue(&queue);printf("鏈隊列元素個數:%d\n", LengthLinkQueue(&queue));CleaerLinkQueue(&queue);printf("清空元素后,長度為%d,rear = %p,front=%p",LengthLinkQueue(&queue), queue.rear,queue.front);printf("\n");return 0; } 驗證結果截圖:


對于循環隊列與鏈隊列的比較,可以從時間和空間2方面來考慮,從時間上,他們的基本操作都是常數時間,即都為O(1),不過循環隊列是事先申請好空間,使用期間不釋放,而對于鏈隊列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則2者還是有些細微的差異。對于空間方面來說,循環隊列必須有一個固定的長度,所以就有了存儲元素個數和空間浪費的問題。而鏈隊列就不存在這個問題,盡管它需要一些指針域,會產生一些空間上的開銷,但也可以接受。所以在空間上,鏈隊列更加靈活。





總結

以上是生活随笔為你收集整理的队列的链式存储结构及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久久婷婷天堂 | gay男互凵gay男同偷精 | 国产美女永久免费无遮挡 | 在线视频观看 | 天天插日日干 | 正在播放木下凛凛88av | 国产精品aⅴ| 麻豆porn| 你懂的在线视频网站 | 日韩电影一二三区 | 91免费版视频 | 国产精品久久久久久久一区二区 | 超碰在线日韩 | 少妇久久久久久被弄到高潮 | 成人动漫一区 | 成人激情在线 | 91啪国产 | 91精品国产99 | 日韩aa | 水蜜桃色314在线观看 | 影音先锋亚洲精品 | 青青草免费在线视频 | 东方av在线免费观看 | 久久午夜福利电影 | 在线中文字幕一区二区 | 色亚洲成人 | 精品久久久久久久久久久久 | 成人一二三区 | 高潮毛片7777777毛片 | 欧洲精品一区二区三区 | 成人v精品蜜桃久一区 | 日韩a在线播放 | 国产高清片 | 午夜国产在线 | 黑人操日本女优 | 午夜福利一区二区三区 | 中文字幕成人一区 | 成人免费视频网 | 中文字幕有码在线 | 91麻豆精品国产理伦片在线观看 | 久久发布国产伦子伦精品 | 少妇aa | 久久久久久久久久一区二区三区 | 亚洲精品成人av | 国产98色在线 | 日韩 | 午夜丰满寂寞少妇精品 | 亚洲午夜精品久久 | 无码国产伦一区二区三区视频 | 狼干综合 | 国产一区二区激情视频 | 黄色片一区二区三区 | 国偷自产视频一区二区久 | 成人a区 | 国产成人精品女人久久久 | 久久久国际精品 | 亚洲综合在线播放 | 国产不卡视频一区二区三区 | 小sao货水好多真紧h无码视频 | 欧美成人中文字幕 | 超薄肉色丝袜一二三 | 国产成人福利在线 | 中文字幕+乱码+中文字幕明步 | 亚洲国产aⅴ精品一区二区的游戏 | 日本精品一区二区 | 最近2019中文字幕大全第二页 | 久草av在线播放 | 成人自拍在线 | 日韩男人天堂 | 精品91自产拍在线观看二区 | 中文字幕亚洲色图 | 精品久久久久久久久久久久久久 | 午夜神器在线观看 | 日韩不卡毛片 | 日日操日日碰 | 国产又粗又猛又黄 | 999精品视频| 一区二区免费播放 | 国产九色91回来了 | 国产第六页 | 黄色福利网站 | 以女性视角写的高h爽文 | 日韩一区不卡视频 | av免费黄色| 欧美日韩中文字幕在线播放 | 久久午夜福利电影 | 影音先锋中文在线 | 国产人与zoxxxx另类 | 91视频国产精品 | 中文字幕第四页 | 精精国产 | 日韩美一区二区 | 日日干夜夜草 | 国产网站大全 | 亚洲精品国产一区二 | r级无码视频在线观看 | 性色影院 | 91色视频在线 | 亚洲精品视频久久久 | 熟妇高潮一区二区三区在线播放 |