資料結構的儲存方式其實只有陣列和鍊錶兩種,別的資料結構例如佇列、棧、樹、圖、堆及雜湊表都是基於以上兩種方式實現的。陣列的優點在於可以隨機訪問,但是插入刪除時需要解決擴容縮容的問題;鍊錶的優點在於可以高效插入刪除,但是無法隨機訪問。
資料結構的基本操作主要為增刪改查,其本質是遍歷+訪問。設計不同的資料結構其根本目的是使得增刪改查盡可能的高效。例如對於銀行辦理業務這個實際問題,使用佇列來儲存資料就比其他的資料結構更加高效。究其根本,資料結構其實是對現實世界的抽象。
遍歷主要可以分為兩種:線性遍歷和非線性遍歷,線性遍歷主要是迭代,而非線性遍歷主要是遞迴。
對於計算機來說,解決問題的唯一思路就是窮舉所有的情況,然後找到最優解。而演算法的設計就在於如何減少搜尋的時間,減少時間的方法其實就是以空間換時間。
資料結構與演算法分析記錄 基本資料結構
單鏈表 struct node 找到某一元素 position find elementtype x,list list 刪除某一元素 void delete elementtype x,list l 找到目標元素前的元素 position findprevious elementtype x,li...
演算法 基本資料結構
1 後進先出 2 棧有乙個屬性為s.top執行最新插入的元素 3 彈出稱為pop,插入稱為push 4 上溢和下溢 如果試圖對乙個空棧執行彈出操作,則稱為下溢 如果s.top超過了n,則稱為上溢,在下面偽 中不考慮上溢問題 1 先進先出 2 佇列有對頭head和對尾tail 3 插入稱為入隊 enq...
基本資料結構與演算法 之陣列
1.mxn的矩陣,若某個元素值為0,則將其所在的行和列全置為0。定義行陣列rows,列陣列cols。如果a i j 為0,則將rows i 和cols j 置為true。當遍歷完整個a陣列後,根據rows和cols的值對矩陣進行修改。2.陣列a,將a 0 a p 和a p 1 a n 1 這兩段交換...