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.從鍵盤輸入一些文字,統計文字單詞的個...