單向鏈表的概念和結構

文章目錄

  • 1.鏈表的概念及結構
  • 2.單鏈表的實現

1.鏈表的概念及結構

概念:鏈表是一種物理存儲結構上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表
中的指針鏈接次序實現的 。
鏈表的結構跟火車車廂相似,淡季時車次的車廂會相應減少,旺季時車次的車廂會額外增加幾節。只需要將火車里的某節車廂去掉/加上,不會影響其他車廂,每節車廂都是獨立存在的。
車廂是獨立存在的,且每節車廂都有車門。想象一下這樣的場景,假設每節車廂的車門都是鎖上的狀態,需要不同的鑰匙才能解鎖,每次只能攜帶一把鑰匙的情況下如何從車頭走到車尾?
最簡單的做法:每節車廂里都放一把下一節車廂的鑰匙。

在鏈表里,每節“車廂”是什么樣的呢?
與順序表不同的是,鏈表里的每節"車廂"都是獨立申請下來的空間,我們稱之為“結點/節點”
節點的組成主要有兩個部分:當前節點要保存的數據和保存下一個節點的地址(指針變量)。
圖中指針變量 plist保存的是第一個節點的地址,我們稱plist此時“指向”第一個節點,如果我們希
望plist“指向”第二個節點時,只需要修改plist保存的內容為0x0012FFA0。
為什么還需要指針變量來保存下一個節點的位置?
鏈表中每個節點都是獨立申請的(即需要插入數據時才去申請一塊節點的空間),我們需要通過指針變量來保存下一個節點位置才能從當前節點找到下一個節點。
結合前面學到的結構體知識,我們可以給出每個節點對應的結構體代碼:
假設當前保存的節點為整形:

struct SListNode
{int data; //節點數據struct SListNode* next; //指針變量用保存下一個節點的地址
};

2.單鏈表的實現

typedef int SLTDataType;  
typedef struct SListNode  
{  SLTDataType data; //節點數據  struct SListNode* next; //指針保存下一個節點的地址  
}SLTNode;  
void SLTPrint(SLTNode* phead);  
//頭部插入刪除/尾部插入刪除  
void SLTPushBack(SLTNode** pphead, SLTDataType x);  
void SLTPushFront(SLTNode** pphead, SLTDataType x);  
void SLTPopBack(SLTNode** pphead);  
void SLTPopFront(SLTNode** pphead);  
//查找  
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);  
//在指定位置之前插入數據  
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);  
//刪除pos節點  
void SLTErase(SLTNode** pphead, SLTNode* pos);  
//在指定位置之后插入數據  
void SLTInsertAfter(SLTNode* pos, SLTDataType x);  
//刪除pos之后的節點  
void SLTEraseAfter(SLTNode* pos);  
//銷毀鏈表  
void SListDesTroy(SLTNode** pphead);

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

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

相關文章

【基礎算法總結】分治—歸并

分治—歸并 1.排序數組2.交易逆序對的總數3.計算右側小于當前元素的個數4.翻轉對 點贊👍👍收藏🌟🌟關注💖💖 你的支持是對我最大的鼓勵,我們一起努力吧!😃😃 1.排序數組 …

NFTScan | 07.01~07.07 NFT 市場熱點匯總

歡迎來到由 NFT 基礎設施 NFTScan 出品的 NFT 生態熱點事件每周匯總。 周期:2024.07.01~ 2024.07.07 NFT Hot News 01/ 數據:Mad Lads 地板價回升至 100 SOL 上方,24 小時漲幅為 13.65% 7 月 1 日,據數據顯示,Solana…

ARM架構以及程序運行解析

文章目錄 1. ARM架構 2. ARM處理器程序運行的過程 3. 示例 3. 基于ARM架構的STM32單片機 1. 運行模式 2. 寄存器組 3. STM32的基本結構 4. STM32的運行模式 4. 寄存器組詳解 1. 未備份寄存器 2. 備份寄存器 3. 程序計數器 4. 程序狀態寄存器 5. CPSR和SPSR寄存器…

【Unity】UGUI的基本介紹

Unity的UGUI(Unity User Interface)是Unity引擎內自帶的UI系統,官方稱之為UnityUI,是目前Unity商業游戲開發中使用最廣泛的UI系統開發解決方案。以下是關于Unity的UGUI的詳細介紹: 一、UGUI的特點 靈活性&#xff1a…

Trick : 10^x 以內最多的因子數

Trick : 1 0 x 10^x 10x 以內最多的因子數 1 0 5 10^5 105 以內具有最多的因子數的數是 83160,它有 128 個因子 ; 1 0 6 10^6 106 以內具有最多因子數的數是 720720,它有 240 個因子 ; 所以遇到需要枚舉因子的,預處理之后大膽枚舉就可以&…

Python 爬蟲 tiktok API接口獲取tiktok用戶關注列表

此接口可獲取tiktok用戶關注列表。若有需要,請點擊文末鏈接聯系我們。 詳細采集頁面如下https://www.tiktok.com/quanap_official 請求API http://api.xxxx.com/tt/user/following?user_id7252644648840381445&count10&offset0&tokentest 請求參數 返…

Impala寫Parquet文件

Impala Parquet相關代碼 https://github.com/cloudera/Impala/search?l=cpp&q=parquet&ref=cmdform 沒有可重用的庫接口,需要在代碼里去看,提取出來,直接使用源碼。 調用關系如下(自右向左調用): HdfsParquetTableWriter(HdfsTableWriter)<-HdfsTableSink<…

改進Transformer模型其實也不難

聲明&#xff1a;文章是從本人公眾號中復制而來&#xff0c;因此&#xff0c;想最新最快了解各類智能優化算法及其改進的朋友&#xff0c;可關注我的公眾號&#xff1a;強盛機器學習&#xff0c;不定期會有很多免費代碼分享~ 目錄 原理簡介 數據介紹 結果展示 完整代碼 之前…

列表(定義、引用、修改、切片和用途)

什么是列表 列表是 Python 中最常用的數據類型之一。它是一種有序、可變&#xff0c;異構的數據集合&#xff0c;可以存儲多個不同類型的元素。 列表的特點 列表是 Python 中的一種數據結構&#xff0c;具有以下特點&#xff1a; 有序性&#xff1a; 列表中的元素按照添加的…

【學術會議征稿】第五屆計算機工程與智能控制學術會議(ICCEIC 2024)

第五屆計算機工程與智能控制學術會議&#xff08;ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五屆計算機工程與智能控制學術會議&#xff08;ICCEIC 2024&#xff09;將于2024年10月18日至22日在廣州舉辦&#xff0…

improved-diffusion代碼逐行理解之train

目錄 代碼理解1、解析命令行參數2、分布式設置和日志配置3、創建模型和擴散過程4、加載數據5、訓練循環6、訓練過程中的關鍵點7、日志和模型保存 代碼 improved-diffusion代碼地址&#xff1a;https://github.com/openai/improved-diffusion 運行代碼會遇到的幾個問題&#xf…

LDR6282-顯示器:從技術革新到視覺盛宴

顯示器&#xff0c;作為我們日常工作和娛樂生活中不可或缺的一部分&#xff0c;承載著將虛擬世界呈現為現實圖像的重要使命。它不僅是我們與電子設備交互的橋梁&#xff0c;更是我們感知信息、享受視覺盛宴的重要窗口。顯示器在各個領域的應用也越來越廣泛。在辦公領域&#xf…

Gradle使用插件SonatypeUploader-v2.6上傳到maven組件到遠程中央倉庫

本文基于sonatypeUploader 2.6版本 插件的使用實例&#xff1a;https://github.com/jeadyx/SonatypeUploaderSample 發布步驟 提前準備好sonatype賬號和signing配置 注&#xff1a;如果沒有&#xff0c;請參考1.0博文的生成步驟&#xff1a; https://jeady.blog.csdn.net/art…

收銀系統源碼-營銷活動-幸運抽獎

1. 功能描述 營運抽獎&#xff1a;智慧新零售收銀系統&#xff0c;線上商城營銷插件&#xff0c;商戶/門店在小程序商城上設置抽獎活動&#xff0c;中獎人員可內定&#xff1b; 2.適用場景 新店開業、門店周年慶、節假日等特定時間促銷&#xff1b;會員拉新&#xff0c;需會…

SQLServer連接異常

2. 文件夾對應的是[internal].[folders]表&#xff0c;與之相關的權限在[internal].[folder_permissions]表 項目對應的是[internal].[projects]表&#xff0c;與之相關的權限在[internal].[project_permissions]&#xff0c;版本在[internal].[object_versions]表。 環境對應…

MongoDB本地配置分片

mongodb server version: 7.0.12 社區版 mongo shell version: 2.2.10 平臺&#xff1a;win10 64位 控制臺&#xff1a;Git Bash 分片相關節點結構示意圖 大概步驟 1. 配置 配置服務器 副本集 &#xff08;最少3個節點&#xff09; -- 創建數據目錄 mkdir -p ~/dbs/confi…

華為eNSP:HCIA匯總實驗

本次拓撲實驗需求&#xff1a; 1、內網地址用DHCP 2、VLAN10不能訪問外網 3、使用靜態NAT 實驗用到的技術有DHCP、劃分VLAN、IP配置、VLAN間的通信&#xff1a;單臂路由、VLANIF&#xff0c;靜態NAT、基本ACL DHCP是一種用于自動分配IP地址和其他網絡參數的協議。 劃分VLA…

新型模型架構(參數化狀態空間模型、狀態空間模型變種)

文章目錄 參數化狀態空間模型狀態空間模型變種Transformer 模型自問世以來,在自然語言處理、計算機視覺等多個領域得到了廣泛應用,并展現出卓越的數據表示與建模能力。然而,Transformer 的自注意力機制在計算每個詞元時都需要利用到序列中所有詞元的信息,這導致計算和存儲復…

Butterfly主題添加動畫加載效果

安裝插件 安裝插件,在博客根目錄[Blogroot]下打開終端&#xff0c;運行以下指令&#xff1a; npm install hexo-butterfly-wowjs --save添加配置 添加配置信息&#xff0c;以下為寫法示例 在站點配置文件_config.yml或者主題配置文件_config.butterfly.yml中添加 wowjs:ena…

簡單介紹 Dagger2 的入門使用

依賴注入 在介紹 Dagger2 這個之前&#xff0c;必須先解釋一下什么是依賴注入&#xff0c;因為這個庫就是用來做依賴注入的。所以這里先簡單用一句話來介紹一下依賴注入&#xff1a; 依賴注入是一種設計模式&#xff0c;它允許對象在運行時注入其依賴項。而不是在編譯時確定&a…