單鏈表的整表建立宣告一結點p和計數器變數i
初始化一空鍊錶l
讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表
迴圈實現後繼結點的賦值和插入
頭插法:從乙個空表開始,生成新節點,讀取資料存放到新結點的資料域中,然後將新結點插入到當前鍊錶的表頭上,直到結束位置。簡單來說就是把新加進的元素放在表頭後的第乙個位置先讓新結點的next指向頭結點之後
然後讓表頭的next指向新結點
void createlisthead (linklist *l,intn) }
3. 尾插法建立單鏈表
建立乙個結點r用來暫存頭結點
建立乙個結點p,將資料儲存在結點p的資料域
將r的指標域指向p
將r移動到鍊錶的末尾
建立完煉表後將r的指標域指向null
void createlisttail (linklist *l,intn) r->next =null;
}
4. 單鏈表的整表刪除的演算法思路
申明結點p和q
將第乙個結點賦值給p,下乙個結點賦值給q
迴圈執行釋放p和將q賦值給p的操作
void clearlist (linklist *l)(*l)->next =null;
return
ok;}
5. 單鏈表結構與順序儲存結構優缺點
儲存方式分配順序儲存結構用一段連續的儲存單元一次儲存線性表的資料元素
單鏈表採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素
時間效能
查詢順序儲存結構o(1)
單鏈表o(n)
插入和刪除順序儲存結構需要平均移動表長一半的元素,時間為o(n)
單鏈表在計算出某位置的指標後,插入和刪除時間僅為o(1)
空間效能順序儲存結構需要預分配儲存空間,分大了,容易造成空間浪費,分小了,容易發生溢位
單鏈表不需要分配儲存空間,只要有就可以分配,元素個數也不受限制
6. 綜上,我們得出一些經驗性的結論
若線性表需要頻繁查詢,很少進行插入和刪除操作時,宜採用順序儲存結構
若需要頻繁插入和刪除時,宜採用單鏈表結構
當線性表中的元素個數變化較大或者根本不知道有多大時,最好用單鏈表結構,這樣可以不需要考慮儲存空間大小的問題
如果事先知道線性表的大致長度時,用順序儲存結構效率會高很多
資料結構與演算法學習筆記
演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...
資料結構與演算法學習筆記(一)
資料 計算機操作的物件 資料元素 組成資料的基本基本單位 資料項 乙個資料元素可以由若干個資料項組成 資料物件 性質相同的資料元素的集合 資料結構 是相互之間存在一種或多種特定關係的資料元素的集合 資料型別 1.原子型別 不可以在分解的基本型別,包括整型,字元型 2.結構型別 由若干個型別組合而成 ...
資料結構與演算法學習筆記3
最好情況時間複雜度 最壞情況時間複雜度 平均情況時間複雜度 均攤時間複雜度 例 在乙個無序的陣列 array 中,查詢變數 x 出現的位置。如果沒有找到,就返回 1 n表示陣列array的長度 intfind int array,int n,int x return pos 時間複雜度 o n nn...