隊列——鏈式存儲

核心思路:

1、首先定義隊列結點,包含數據域和指針域;然后定義鏈式隊列,包含隊列節點類型的隊頭和隊尾指針。
2、初始化:
    帶頭結點:給頭結點分配內存,然后隊頭和隊尾指針指向頭結點,同時隊頭指針的next指向NULL。
    不帶頭結點:隊頭和隊尾指針都指向NULL。
3、入隊:
    帶頭結點:先給入隊節點分配內存,然后將新節點插入到隊尾指針后面,新節點的下一個節點為NULL,最后將隊尾指針指向新結點。
    不帶頭結點:先給入隊節點分配內存 ,如果隊列為空 ,隊頭和隊尾結點都指向新節點,否則將新節點插入到隊尾指針后面,最后將隊尾指針指向新結點。
4、出隊:
    帶頭結點:首先判斷隊列是否為空,然后定義指針p指向隊頭指針的下一個結點,如果這是最后一個結點,則front=rear ,最后釋放p的內存。
    不帶頭結點:首先判斷隊列是否為空, 然后定義指針p指向隊頭指針指向的結點,如果這是最后一個結點,則front=NULL,rear=NULL ,最后釋放p的內存。

代碼:

#include<stdio.h>
#include<stdlib.h>//定義 
typedef struct LinkNode{        //隊列結點 int data;struct LinkNode *next;
}LinkNode;
typedef struct{        //鏈式隊列 LinkNode *rear,*front;
}LinkQueue;//初始化——帶頭結點 
void InitQueue(LinkQueue &Q){Q.front=Q.rear=(LinkNode *)malloc(sizeof(LinkNode));Q.front->next=NULL; 
} //初始化——不帶頭結點 
void InitQueue_(LinkQueue &Q){Q.front=NULL;Q.rear=NULL;
} //入隊——帶頭結點 
bool EnQueue(LinkQueue &Q,int x){LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode));    //給新節點分配內存 s->data=x; s->next=NULL;Q.rear->next=s;        //新節點插入到尾指針后面 Q.rear=s;     //尾指針指向新插入的結點 return true;
} //入隊——不帶頭結點 
bool EnQueue_(LinkQueue &Q,int x){LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode));    //給新節點分配內存 s->data=x; s->next=NULL;if(Q.front==NULL){Q.front=s;Q.rear=s;} else{Q.rear->next=s;        Q.rear=s;}return true;
} //出隊——帶頭結點
bool DeQueue(LinkQueue &Q,int &x){if(Q.front==Q.rear)        //首先判斷隊空 return false;LinkNode *p=Q.front->next;    x=p->data;Q.front->next=p->next;if(Q.rear==p){    //這是最后一個結點 Q.rear=Q.front; }free(p);return true; 
} //出隊——不帶頭結點
bool DeQueue_(LinkQueue &Q,int &x){if(Q.front==NULL)        //首先判斷隊空 return false;LinkNode *p=Q.front;    //不帶頭結點時頭指針指向隊頭元素 x=p->data;Q.front=p->next;if(Q.rear==p){    //這是最后一個結點 Q.rear=NULL;Q.front=NULL; }free(p);return true; 
} //隊列的鏈式存儲一般不會出現隊滿的情況,除非內存不足 int main(){} 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/16009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/16009.shtml
英文地址,請注明出處:http://en.pswp.cn/web/16009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日一題 字符串排序

目錄 1.前言 2.題目解析 3.算法原理 4.代碼實現 1.前言 在編程練習中&#xff0c;字符串的全排列問題是一個經典的算法問題。通過對字符串進行全排列&#xff0c;可以得到該字符串的所有可能的排列組合。本文將探討如何對含有重復字符的字符串進行全排列&#xff0c;并且解決…

K8s的kubectl的基本操作

K8s的kubectl的基本操作 K8s基本信息的查看 查看版本信息 kubectl versio查看資源對象簡寫 kubectl api-resources查看集群信息 kubectl cluster-info配置kubectl自動補全 source <(kubectl completion bash)查看master節點狀態 kubectl get cs查看命名空間 kubectl…

10.js預解析

就是在代碼執行之前&#xff0c;對代碼進行通讀解釋 只解析兩個內容&#xff1a; &#xff08;1&#xff09;對var聲明的變量 &#xff08;2&#xff09;聲明式函數 &#xff08;1&#xff09;對var聲明的變量進行提前聲明&#xff0c;但不賦值 var x console.log(x) //undefi…

【找出第 K 大的異或坐標值】python

4層循環暴力超時 class Solution:def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:nums[]for a in range(len(matrix)):for b in range(len(matrix[0])):num0for i in range(a1):for j in range(b1):num^matrix[i][j]nums.append(num)nums.sort()retu…

web安全滲透測試十大常規項(一):web滲透測試之CSRF跨站請求偽造

滲透測試之CSRF跨站請求偽造 CSRF跨站請求偽造 CSRF跨站請求偽造

類的內存對齊位段位圖布隆過濾器哈希切割一致性哈希

文章目錄 一、類的內存對齊1.1規則1.2原因 二、位段2.1介紹2.2內存分配問題2.3跨平臺問題2.4使用的注意事項 三、位圖的應用3.1 給40億個不重復的無符號整數&#xff0c;找給定的一個數。&#xff08;int的范圍可以到達42億多&#xff09;3.2 給定100億個整數&#xff0c;設計算…

Golang實現文件復制

方法&#xff1a;三種 package zdpgo_fileimport ("errors""io""os" )// CopyFile 使用io.Copy進行文件的復制&#xff0c;同時也會復制文件的所有權限 // param src 復制文件 // param des 目標文件 // return error 錯誤信息 func CopyFile(s…

2024年弘連網絡FIC大會競賽題線下決賽題

總結&#xff1a; FIC決賽的時候&#xff0c;很多小問題沒發現&#xff0c;在pve平臺做題確實很方便。 這套題目復盤完&#xff0c;服務器這塊的知識確實收獲了很多&#xff0c;對pve集群平臺和網絡拓撲也有了一定的認識&#xff0c;感謝各位大佬悉心指導。 接下來&#xff0…

【FPGA】Verilog:奇校驗位生成器的實現(Odd Parity bit generator)

解釋奇數奇偶校驗位生成器和檢查器的仿真結果及過程。 真值表和卡洛圖: Odd Parity Bit Generator A B C

怎么在pyqt中顯示matplotlib的繪圖?

想要在pyqt中顯示matplotlib的繪圖&#xff0c;在繪圖時&#xff0c;其實不必使用以下語句&#xff1a; matplotlib.use("Qt5Agg") # 聲明使用QT5最關鍵的語句是&#xff1a; from matplotlib.backends.backend_qt5agg import FigureCanvasQTAggFigureCanvasQTAgg…

學 Python 具體能干什么?

Python 是一種功能強大、用途廣泛的編程語言&#xff0c;因其簡潔易讀的語法和豐富的庫生態系統而備受歡迎。學習 Python后&#xff0c;你可以從事以下幾方面的工作&#xff1a; 1. Web 開發 Python 有很多流行的 Web 框架&#xff0c;如&#xff1a; Django&#xff1a;一個…

Android studio的Gradle出問題

Gradle sync failed: Plugin [id: com.android.application, version: 7.1.1, apply: false] was not found in any of the following sources: 在src里面的build.gradle中 plugins { id ‘com.android.application’ } 的上面加上 buildscript {repositories {jcenter()}depen…

從 0 開始實現一個網頁聊天室 (小型項目)

實現功能 用戶注冊和登錄好友列表展示會話列表展示: 顯示當前正在進行哪些會話 (單聊 / 群聊) , 選中好友列表中的某個好友, 會生成對應的會話實時通信, A給B發送消息, B的聊天界面 / 會話界面能立刻顯示新的消息 TODO: 添加好友功能用戶頭像顯示傳輸圖片 / 表情包歷史消息搜…

禪道密碼正確但是登錄異常處理

禪道密碼正確&#xff0c;但是登錄提示密碼錯誤的異常處理 排查內容 # 1、服務器異常&#xff0c;存儲空間、數據庫異常 # 2、服務異常&#xff0c;文件丟失等異常問題定位 # 1、df -h 排查服務器存儲空間 # 2、根據my.php排查數據庫連接是否正常 # 3、修改my.pho,debugtrue…

探索切片索引:列表反轉的藝術

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言&#xff1a;列表反轉的挑戰 二、切片索引的基本概念 三、切片索引實現列表反轉 …

程序員副業賺錢的底層邏輯

賺錢就像玩拼圖游戲&#xff0c;要懂得把面包屑組裝成為一面包 分享一點心得&#xff1a;你會發現賺錢的商機其實就像個拼圖游戲&#xff0c;有很多面包屑、很多碎片&#xff0c;真的、假的、有價值的、誤導的&#xff0c;都散落在各處。 你需要一一拾取&#xff0c;一一甄別…

gerrit自啟動方案—windows服務

在windows系統中&#xff0c;想將gerrit做成開機自啟動一般使用兩個方法 1.用.bat腳本方法 編寫.bat腳本&#xff0c;并將腳本文件生成快捷方式&#xff0c;放置在電腦的啟動目錄下&#xff0c;電腦開機或重啟后&#xff0c;腳本會自動啟動 &#xff08;winR 輸入 shell:start…

vs2013使用qt Linguist以及tr不生效問題

一、qt Linguist&#xff08;語言家&#xff09;步驟流程 1、創建翻譯文件,在qt選項中 2.選擇對應所需的語言&#xff0c;得到.ts后綴的翻譯文件 3.創建.pro文件&#xff0c;并將.ts配置在.pro文件中 3.使用qt Linguist 打開創建好的以.ts為后綴的翻譯文件&#xff0c;按圖所示…

細粒度圖像分類論文(AAM模型方法)閱讀筆記

細粒度圖像分類論文閱讀筆記 摘要Abstract1. 用于細粒度圖像分類的聚合注意力模塊1.1 文獻摘要1.2 研究背景1.3 本文創新點1.4 計算機視覺中的注意力機制1.5 模型方法1.5.1 聚合注意力模塊1.5.2 通道注意力模塊通道注意力代碼實現 1.5.3 空間注意力模塊空間注意力代碼實現 1.5.…

Git命令之江湖百曉生

Git 命令大全 第一章&#xff1a;Git 簡介 Git 是一個開源的分布式版本控制系統&#xff0c;由 Linus Torvalds 于 2005 年創建&#xff0c;用于有效、高速地處理從小到大的項目。它是一個命令行工具&#xff0c;用于跟蹤和管理源代碼歷史記錄。 第二章&#xff1a;Git 的 1…