data structures + algorithms = programs
資料結構是計算機儲存、組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合
集合結構,線性結構,樹形結構,圖結構。
順序儲存結構和鏈式儲存結構.
資料結構在計算機專業課程體系中起到承上啟下的作業,熟練使用資料結構可以使程式執行的更快更流暢
思維導圖:
對特定問題求解步驟的一種描述,它是指令的特定序列,每一條指令表示乙個或多個操作
有窮性,確定性,可行性,輸入,輸出。
自然語言,流程圖,程式語言,偽**。
(1)演算法設計的目標:
正確性,可使用性,可讀性,健壯性,時間效率高與儲存量低
(2)兩種衡量演算法效率的方法:
事後統計法(把程式跑一遍):
必須執行程式,且存在其他因素掩蓋演算法本質
演算法執行時間=基本運算時間*運算次數
基本運算:被視為算術運算的一般是最深層迴圈內語句
(3)演算法效率分析:
演算法的執行時間可由其基本運算的執行次數來計算
時間複雜度:記號"o",表示隨問題規模n增大,演算法執行時間的增長率和f(n)的增長率相同。
通常情況下,鑑於運算空間較為充足,常以演算法的時間複雜度作為演算法優劣的衡量指標
常數階:o(1):基本運算次數與問題規模無關。注意:o(1)不代表1次運算
常用的演算法時間複雜度的關係:o(1)2)3)
演算法的漸進時間複雜度是指:隨著問題規模的增大,演算法執行時間的增長趨勢
(4)演算法儲存空間分析:
空間複雜度:演算法在執行過程中臨時占用的空間的度量,一般也是問題規模n的函式s(n)=o(g(n)).
演算法的時間複雜度和空間複雜度相互影響,好的時間複雜度可能會導致占用較多的儲存空間。
思維導圖:
線性表是最簡單,最常用的線性結構,線性結構是乙個資料元素的有序關係
定義:具有相同特性的資料元素的乙個有限序列
初始化initlist(&l),銷毀destroylist(&l),判斷是否為空listempty(l),輸出dislist(l),返回l中元素的個數listlength(l)
使用一塊位址連續的儲存空間,按照線性表中元素的邏輯順序依次存放相應元素
特點:邏輯上相鄰以及實體地址相鄰,實現隨機儲存。
順序表的基本操作:
初始化,銷毀,獲取元素,查詢,插入,刪除
特點:線性表中的資料元素存放在一組位址任意的儲存節點,節點之間用鏈進行連線
結構:節點= 資料元素 + 指標
頭指標:
指向線性表的第乙個元素,有時為了簡化插入和刪除操作,需要在第乙個節點之前設定乙個頭節點
儲存密度
儲存密度=資料所佔空間/節點所佔空間 (因此鍊錶的儲存密度不高,比起順序表來說儲存空間的利用率比較低)
鏈式表的基本操作:
初始化,銷毀,判斷是否為空表,輸出,插入,刪除,建立單鏈表:頭插法和尾插法
思維導圖:
(1)基本概念:
(2)特性:
lifo:後進先出;具有線性關係
(3)儲存結構:
順序儲存結構和鏈式儲存結構;
(4)儲存內容:
棧中元素和指示棧頂的標記
(5)進棧和出棧可以穿插進行(1)基本概念:
(2)特性:
fifo:後進先出;具有線性關係
(3)儲存結構:
順序儲存結構和鏈式儲存結構;
(4)入隊和出隊可以穿插進行
(5)問題:「假溢位」-隊伍為「滿」,實際為空。解決方法:採用迴圈佇列
棧和佇列都是操作受限制的線性表。
思維導圖:
(1)基本概念:
是由0個或者多個字元組成的有限序列,是資料元素為單個字元的特殊線性表
(2)串與線性表的不同之處:
處理的資料型別不同:
串僅僅處理字元型別,線性表處理任何資料型別。
基本操作針對的型別不同:
線性表的基本操作中,大多以「單個元素」作為操作物件,而串大多以「串的整體「作為操作整體
(3)儲存結構:
1.順序儲存結構:串中字元被依次存放在一組連續的儲存單元中
兩種順序儲存方式:
非緊縮格式:1個記憶體單元存1個字元
緊縮格式 :1個記憶體單元存放多個字元
2.鏈式儲存結構:鏈式串中的乙個節點可以儲存乙個或多個字元
在鏈式串中,基本操作的實現大多利用尾插法,建立返回的結果串
(3)兩種演算法:bf演算法和kmp演算法
思維導圖:
資料結構概念總結
基本概念 資料 能被輸入到計算機中,且能被計算機處理的符號的集合 資料元素 資料集合中的乙個個體。資料項 資料的不可分割的最小單位。資料型別 在一種程式語言中,變數所具有的資料種類。邏輯結構 資料之間的相互關係。儲存結構 資料在計算機中的表示。演算法五個特性 有窮性 確定性 可行性 輸入 輸出。演算...
資料結構及概念分析總結
作為計算機專業的人,如果出去跟別人說自己不懂資料結構,那就是天大的笑話了,資料結構 演算法 程式設計,這是計算機屆公認的理論了,無論我們在做專案時,還是參加各種比賽,乃至於我們參加工作招聘,資料結構都是至關重要的,有時你甚至可以不懂計算機語言,但是不能不懂資料結構,通過上次的華為面試,我發現自己在資...
資料結構概念
資料結構概念 資料結構包含資料和結構,通俗一點就是將資料按照一定的結構組合起來,不同的組合方式會有不同的效率,使用不同的場景,如此而已。比如我們最常用的陣列,就是一種資料結構,有獨特的承載資料的方式,按順序排列,其特點就是你可以根據下標快速查詢元素,但是因為在陣列中插入和刪除元素會有其它元素較大幅度...