當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:數(shù)據(jù)結(jié)構(gòu)與算法知識點總結(jié)
下面是我在課堂上總結(jié)的數(shù)據(jù)結(jié)構(gòu)與運算的知識點,不懂的快看看
一、數(shù)據(jù)結(jié)構(gòu):研究數(shù)據(jù)(數(shù)據(jù)元素)之間的關(guān)系。(C研究數(shù)值型數(shù)據(jù)之間的簡單運算, 數(shù)據(jù)結(jié)構(gòu) 還研究非數(shù)值型之間的運算)
1.邏輯結(jié)構(gòu)(關(guān)系):集合、線性關(guān)系、樹形關(guān)系、圖狀關(guān)系(線性和非線性關(guān)系)
2.物理結(jié)構(gòu)(物理關(guān)系):邏輯結(jié)構(gòu)在計算機內(nèi)存中具體實現(xiàn)的方法,有順序、鏈式、 索引、散列等存儲方法
3.數(shù)據(jù)運算:對數(shù)據(jù)進行的操作,增、刪、查、改、排序。
數(shù)據(jù)即信息的載體。
數(shù)據(jù)元素是數(shù)據(jù)的基本單位(又稱記錄,Record),由若干個基本項(or字段、域?qū)傩?組成
數(shù)據(jù)類型是對數(shù)據(jù)元素取值范圍與運算的限定
相關(guān)術(shù)語概念:
數(shù)據(jù)Date 數(shù)據(jù)類型Date Type 數(shù)據(jù)元素Date Element
數(shù)據(jù)結(jié)構(gòu)Date Structure 物理結(jié)構(gòu)(存儲結(jié)構(gòu))Physical Structure
順序存儲Sequential Storage 鏈式存儲Linked Storage
索引存儲Indexed Storage 散列存儲Hash Storage
形式化語言描述(數(shù)學(xué)表達式):
DS=(D,R)D數(shù)據(jù)元素的集合,R D上關(guān)系的集合
根據(jù)數(shù)據(jù)元素間的關(guān)系的基本特性有四種基本數(shù)據(jù)結(jié)構(gòu):
集合——數(shù)據(jù)元素間除“同屬于一個集合”外,無其他關(guān)系
線性結(jié)構(gòu)——一個對一個,如線性表、棧、隊列
樹形結(jié)構(gòu)——一個對多個,如樹
圖狀結(jié)構(gòu)——多個對多個,如圖(圖是樹的拓展,可有樹構(gòu)成)
算法Algorithm一個又窮規(guī)則(or語句、指令)的有序集合(對程序的優(yōu)化,易閱讀、調(diào)試、維護)
特性:有窮性、確定性、可行性、輸入(0-n)、輸出(1-n)
程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu)
算法與程序的區(qū)別:
1. 算法與計算機無關(guān),程序依賴于具體的計算機語言
2. 算法重點是在解決問題的思路上
算法分析(好壞):時間復(fù)雜度T(n) 空間復(fù)雜度D(n)(不考慮,犧牲來成全時間)Time/Space Complexity
語句的頻度:可執(zhí)行語句程序中重復(fù)執(zhí)行的次數(shù)。某語句執(zhí)行一次耗時t,執(zhí)行次數(shù)f,則該語句總耗時t*f。
量級T(n)=O(n3) 取次數(shù)最高的項并去掉系數(shù),作為時間復(fù)雜度 。
↑上午 概念
↓下午 線性表 的邏輯和存儲結(jié)構(gòu)、相關(guān)算法的實現(xiàn)以及線性表的應(yīng)用舉例。
線性表Linear List
首先創(chuàng)建表,再插入表,再增刪改查,銷毀。
創(chuàng)建:申請一個結(jié)構(gòu)體
結(jié)構(gòu)體聲明寫在頭文件里面
用gedit編輯.h和.c文件
方便的查找,在挨著表的末尾空間在申請一個空間用來存放表的有效個數(shù)or最后一個元素下標(biāo)。
創(chuàng)建表 :...待寫
插入數(shù)據(jù):1.首先判斷表是否為滿。2.判斷插入的位置是否有效。3.從后往上移動數(shù)據(jù)元素。 4.插入元素。5.尾指針last+1
刪除數(shù)據(jù):1.首先判斷表是否為空。2.判斷刪除的位置是否有效。3.刪除后從前往后移動元 素。4.尾指針last-1。5移動后,之前的最后一個數(shù)據(jù),直接忽視不用了,但是 還在。