資料結構(四)

2021-09-29 11:34:00 字數 1111 閱讀 3395

1.鍊錶是什麼玩意?

有單向鍊錶和雙向鍊錶之分

定義:物理上非連續、非順序,由若干節點所組成

單向鍊錶:

單向鍊錶的乙個節點由2部分組成,資料域(data)+指標域(next),資料域存放資料,指標域存放指向下乙個節點的指標

頭節點:鍊錶的第乙個節點

尾節點:鍊錶的最後乙個節點,next指標指向為null

雙向鍊錶:

除了包含data+next外,還有乙個前置指標(prev),用來指向前乙個節點

雙向鍊錶的頭節點prev指向為null,尾節點next指標指向為null

鍊錶的儲存方式:

與陣列做對比,陣列在記憶體中是順序儲存。占用連續完整的儲存空間,鍊錶在記憶體中隨機儲存,見縫插針,哪有位置存哪,節點間通過指標關聯起來。

2.鍊錶的基本操作

查:

不能通過下標快速定位,只能從頭節點開始不斷移動指標,乙個個逐一查詢,時間複雜度最壞為o(n)

改:

忽略查詢的過程,更新同陣列一樣簡單,直接新資料替換舊資料,時間複雜度o(n)

增:

有3種情況

1)尾部插入

最簡單,將尾部節點next指標指向新節點,新節點成為尾部節點

2)頭部插入

新節點的next指標指向原來的頭節點,新節點成為頭節點

3)中間插入

插入位置前面節點的next指向新節點,新節點next指向插入位置後邊的節點

刪:

3種情況

1)頭刪除

將原來頭節點next指向設為新的頭節點

2)尾刪除

將倒數第二個節點的next指標指向為null

3)中間刪除

將要刪除的節點的前置節點的next指標指向要刪除節點的後置節點

不考慮查詢過程,刪除和插入時間複雜度o(1)

3.鍊錶的應用場景

多用於寫操作,插入和刪除

資料結構(四)

同學說我更新得太慢了。是啊,隔了好久才更新一次。其實我也想快點的更新,更新得越快同時也說明我掌握知識的速度越快,越多。但是工作不允許啊。每天早出晚歸,空閒的實現還要分配一點給外語。不過,以後我會努力的,只要有朋友的支援,我會把我的所學和經驗奉獻給大家。有點開源的精神吧。呵呵,當然了,我還沒有哪個資格...

資料結構 四

list.h檔案 ifndef list h define list h typedef enumbool typedef int data typedef struct node node typedef struct list list 建立鍊錶 list createlist 銷毀鍊錶 voi...

資料結構實驗四

一 實驗目的 鞏固字串和多維陣列相關知識,學會運用靈活應用。1.回顧字串和多維陣列的邏輯結構和儲存操作特點,字元和陣列的物理儲存結構和常見操作。2.學習運用字串和和陣列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.從鍵盤輸入一些文字,統計文字單詞的個...