數據結構(第一講)
時(shi)間:2018-07-26 來源:未(wei)知(zhi)
數據結(jie)構(gou)--第一講 2018年(nian)3月21日
一、數(shu)(shu)(shu)(shu)據(ju)(ju)(ju)(ju)結構:研(yan)究(jiu)數(shu)(shu)(shu)(shu)據(ju)(ju)(ju)(ju)(數(shu)(shu)(shu)(shu)據(ju)(ju)(ju)(ju)元素)之間(jian)(jian)的關系。(C研(yan)究(jiu)數(shu)(shu)(shu)(shu)值型(xing)數(shu)(shu)(shu)(shu)據(ju)(ju)(ju)(ju)之間(jian)(jian)的簡單運(yun)(yun)算, 數(shu)(shu)(shu)(shu)據(ju)(ju)(ju)(ju)結構 還研(yan)究(jiu)非數(shu)(shu)(shu)(shu)值型(xing)之間(jian)(jian)的運(yun)(yun)算)
1.邏輯結構(關(guan)系):集(ji)合(he)、線(xian)性關(guan)系、樹形關(guan)系、圖(tu)狀關(guan)系(線(xian)性和非線(xian)性關(guan)系)
2.物(wu)理結構(物(wu)理關系):邏輯結構在計(ji)算機內存(cun)中具體實(shi)現的方(fang)法,有(you)順序、鏈式、 索引、散列(lie)等存(cun)儲方(fang)法
3.數據(ju)運算(suan):對數據(ju)進行的操作,增、刪、查、改、排序。
數據即信息(xi)的(de)載體。
數(shu)據元(yuan)素(su)是數(shu)據的基本單位(又(you)稱(cheng)記錄,Record),由若干個基本項(or字段、域屬性)組成
數據類型是對數據元素取值范圍與(yu)運(yun)算的(de)限定(ding)




相關術語(yu)概(gai)念:
數據(ju)Date 數據(ju)類(lei)型Date Type 數據(ju)元素Date Element
數據結構Date Structure 物(wu)理結構(存儲結構)Physical Structure
順序存儲Sequential Storage 鏈(lian)式存儲Linked Storage
索(suo)引存儲(chu)Indexed Storage 散列存儲(chu)Hash Storage
形(xing)式化(hua)語言描述(數(shu)學表達式):
DS=(D,R)D數據元素的集(ji)合(he),R D上關系的集(ji)合(he)


根據(ju)數(shu)據(ju)元素間的關系的基本特性(xing)有四種基本數(shu)據(ju)結構:
集合(he)——數(shu)據元素間除“同屬于一個集合(he)”外,無(wu)其他關(guan)系
線性結(jie)構——一個(ge)對一個(ge),如線性表、棧、隊列(lie)
樹(shu)(shu)形結構(gou)——一個對多個,如樹(shu)(shu)
圖狀結構——多個(ge)對(dui)多個(ge),如圖(圖是樹的拓展(zhan),可(ke)有樹構成)
算(suan)法Algorithm一個又窮(qiong)規則(or語句、指令)的有序(xu)集合(對(dui)程序(xu)的優(you)化,易閱讀、調試、維護)
特性:有(you)窮性、確定性、可行性、輸入(0-n)、輸出(1-n)
程序(xu) = 算法(fa) + 數據結構(gou)
算法(fa)與程(cheng)序的(de)區別(bie):
1. 算(suan)(suan)法與計算(suan)(suan)機無關,程(cheng)序依賴于具體的計算(suan)(suan)機語言
2. 算法重點是在解決(jue)問題的(de)思路(lu)上
算法分析(好(hao)壞):時(shi)間復(fu)雜度(du)T(n) 空(kong)間復(fu)雜度(du)D(n)(不考慮(lv),犧牲來(lai)成(cheng)全時(shi)間)Time/Space Complexity
語句的(de)頻度:可(ke)執(zhi)行(xing)語句程序中重復執(zhi)行(xing)的(de)次(ci)(ci)數。某(mou)語句執(zhi)行(xing)一次(ci)(ci)耗(hao)時t,執(zhi)行(xing)次(ci)(ci)數f,則(ze)該語句總耗(hao)時t*f。
量級T(n)=O(n3) 取次數最高的(de)項并去掉系數,作為時間復雜度 。
↑上午 概念(nian)
↓下午(wu) 線性表(biao) 的邏輯(ji)和(he)存儲結構(gou)、相關算(suan)法的實現以及線性表(biao)的應(ying)用舉例。
線性表Linear List


首先(xian)創建表,再插入表,再增刪(shan)改查,銷毀。
創建:申請一個結構(gou)體
結(jie)構(gou)體聲(sheng)明寫在頭文件里面(mian)
用gedit編輯.h和.c文件
方便的查找,在(zai)挨著表(biao)的末尾空間在(zai)申(shen)請(qing)一個(ge)空間用來存放表(biao)的有(you)效個(ge)數or最(zui)后(hou)一個(ge)元素(su)下標(biao)。
創建(jian)表 :...待寫
插(cha)入(ru)數(shu)據:1.首先判斷表是否為滿。2.判斷插(cha)入(ru)的位置(zhi)是否有效(xiao)。3.從后往(wang)上移動數(shu)據元素(su)。 4.插(cha)入(ru)元素(su)。5.尾指針last+1
刪(shan)(shan)除數據(ju):1.首先(xian)判斷表是(shi)否為空。2.判斷刪(shan)(shan)除的(de)位置是(shi)否有(you)效。3.刪(shan)(shan)除后從(cong)前往后移動元 素。4.尾指針last-1。5移動后,之前的(de)最后一個(ge)數據(ju),直接忽視不用了(le),但是(shi) 還在。