數(shù)據(jù)結(jié)構(gòu)-第1章 緒論_第1頁
數(shù)據(jù)結(jié)構(gòu)-第1章 緒論_第2頁
數(shù)據(jù)結(jié)構(gòu)-第1章 緒論_第3頁
數(shù)據(jù)結(jié)構(gòu)-第1章 緒論_第4頁
數(shù)據(jù)結(jié)構(gòu)-第1章 緒論_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)結(jié)構(gòu)

(DataStructure)使用教材指定教材:[1]嚴(yán)蔚敏等,《數(shù)據(jù)結(jié)構(gòu)(C語言版)》,清華大學(xué)出版社[2]嚴(yán)蔚敏等,《數(shù)據(jù)結(jié)構(gòu)習(xí)題集(C語言版)》,清華大學(xué)出版社參考教材:[1]耿國華,《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社[2]楊秀金等,《數(shù)據(jù)結(jié)構(gòu)》,西安電子科技大學(xué)出版社[3]許卓群,《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社[4]唐策善等,《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社課程考核方式與要求本課程為考試課,滿分100分,分為平時成績和期末考試成績兩部分。平時成績:占30%。包括出勤、作業(yè)、課堂練習(xí)、上機、課堂紀(jì)律、回答問題、課間擦黑板等。期末考試:占70%,閉卷筆試,按各章知識點要求,突出重點,考核學(xué)生綜合應(yīng)用能力。特別提醒:上課時要帶好教材、筆、練習(xí)本!課程性質(zhì)及教學(xué)目的《數(shù)據(jù)結(jié)構(gòu)》是信息管理與信息系統(tǒng)專業(yè)本科生的一門專業(yè)基礎(chǔ)必修課。其教學(xué)目的就是要培養(yǎng)學(xué)生的數(shù)據(jù)抽象能力,學(xué)會分析研究計算機加工的數(shù)據(jù)的特性,以便為應(yīng)用涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及相應(yīng)的算法,并初步掌握算法的時間分析和空間分析的技巧,培養(yǎng)良好的程序設(shè)計技能。課程地位

數(shù)據(jù)結(jié)構(gòu)程序設(shè)計語言離散數(shù)學(xué)計算機原理面向?qū)ο蟪绦蛟O(shè)計操作系統(tǒng)數(shù)據(jù)庫編譯原理人工智能課程內(nèi)容本課程的基本內(nèi)容分為三個部分:第一部分:緒論第二部分:基本的數(shù)據(jù)結(jié)構(gòu)包括:線性結(jié)構(gòu)——線性表、棧和隊列、

串、數(shù)組和廣義表非線性結(jié)構(gòu)——樹、圖第三部分:基本的數(shù)據(jù)處理技術(shù)包括:查找技術(shù)和排序技術(shù)

1.1什么是數(shù)據(jù)結(jié)構(gòu)1.2基本概念和術(shù)語1.3抽象數(shù)據(jù)類型的表示與實現(xiàn)1.4算法和算法分析第1章緒論1.1什么是數(shù)據(jù)結(jié)構(gòu)計算機的主要應(yīng)用:程序=數(shù)據(jù)結(jié)構(gòu)+算法科學(xué)計算數(shù)據(jù)處理發(fā)展到計算機加工處理的對象:純數(shù)值發(fā)展到字符、表格和圖像等1968年,設(shè)立《數(shù)據(jù)結(jié)構(gòu)》課程計算機解決問題的步驟:具體問題設(shè)計編制分析抽象測試調(diào)整數(shù)學(xué)模型算法程序最終解答登錄號:書名:作者名:分類號:出版單位:出版時間:價格:書目信息書目文件按書名按作者名按分類號索引表線性表例1書目自動檢索系統(tǒng)樹……..……..…...…...…...…...例2人機對奕問題CEDABABACADBABCBDDADBDCEAEBECED圖例3.多叉路口交通燈管理問題是一門研究非數(shù)值計算的程序設(shè)計問題中計算機的操作對象以及它們之間的關(guān)系和操作等等的學(xué)科《數(shù)據(jù)結(jié)構(gòu)》定義1.2基本概念和術(shù)語1、數(shù)據(jù)(Data):一切能夠由計算機接受和處理的對象。

2、數(shù)據(jù)元素(DataElement):是數(shù)據(jù)的基本單位,在程序中作為一個整體加以考慮和處理。

3、數(shù)據(jù)項(DataItem):是數(shù)據(jù)的不可分割的最小單位,在有些場合下,數(shù)據(jù)項又稱為字段或域。

數(shù)據(jù)元素數(shù)據(jù)項4、數(shù)據(jù)結(jié)構(gòu)(Datastructure)

相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。例如:線性結(jié)構(gòu):

樹形結(jié)構(gòu):圖形結(jié)構(gòu):5.?dāng)?shù)據(jù)類型(DataType)

數(shù)據(jù)類型是一個值的集合和定義在這個值集上的一組操作的總稱。例如:C語言中的整型變量,其值集為某個區(qū)間上的整數(shù),定義在其上的操作為加,減,乘,除和取模等算術(shù)運算。6. 抽象數(shù)據(jù)類型(AbstractDataType)抽象數(shù)據(jù)類型(簡稱ADT)定義了一個數(shù)據(jù)對象,數(shù)據(jù)對象中各元素間的結(jié)構(gòu)關(guān)系,以及一組處理數(shù)據(jù)的操作.抽象數(shù)據(jù)類型的最本質(zhì)特點是:數(shù)據(jù)抽象和信息隱蔽.抽象的本質(zhì)是抽取反映事物的本質(zhì)點,忽略非本質(zhì)的細(xì)節(jié),從而使設(shè)計的數(shù)據(jù)結(jié)構(gòu)更具一般性,可以解決一類問題.信息隱蔽就是對用戶隱藏數(shù)據(jù)存儲和操作實現(xiàn)的細(xì)節(jié),使用者僅需了解操作或界面服務(wù),通過界面服務(wù)來訪問數(shù)據(jù).

數(shù)據(jù)結(jié)構(gòu)的內(nèi)容邏輯結(jié)構(gòu)存儲結(jié)構(gòu)運算集合邏輯結(jié)構(gòu)定義:數(shù)據(jù)之間邏輯關(guān)系描述.形式化描述:數(shù)據(jù)結(jié)構(gòu)是一個二元組Data_Structure=(D,S)其中:D是數(shù)據(jù)元素的有限集,S是D上關(guān)系的有限集.

例如:DS2=(D2,R2)D2={a,b,c,d,e,f}R2={T}T={<a,b>,<a,c>,<a,d>,<d,e>,<e,f>}abcdef四種基本的邏輯結(jié)構(gòu)集合、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖形結(jié)構(gòu)存儲結(jié)構(gòu)定義:存儲結(jié)構(gòu)(又稱物理結(jié)構(gòu))指邏輯結(jié)構(gòu)在計算機中的存儲映像,是邏輯結(jié)構(gòu)在計算機中的實現(xiàn),包括數(shù)據(jù)的表示和關(guān)系的表示.分類:

順序存儲結(jié)構(gòu):借助元素在存儲器中的相對位置來表示數(shù)據(jù)元素之間的邏輯關(guān)系.

鏈?zhǔn)酱鎯Y(jié)構(gòu):借助指示元素存儲地址的指針表示數(shù)據(jù)元素之間的邏輯關(guān)系.運算集合討論數(shù)據(jù)的目的是在計算機中實現(xiàn)操作,因此在數(shù)據(jù)結(jié)構(gòu)上的運算集合是很重要的部分.數(shù)據(jù)結(jié)構(gòu)就是研究一類數(shù)據(jù)的表示及其相關(guān)操作的集合.例如:工資表的查找,刪除和插入操作.1.3抽象數(shù)據(jù)類型的表示與實現(xiàn)數(shù)據(jù)類型

定義:一個值的集合和定義在這個值集上的一組操作的總稱。C語言中的基本數(shù)據(jù)類型

intcharfloatdoublevoid

整型字符型浮點型雙精度型無值抽象數(shù)據(jù)類型是指一個數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作數(shù)據(jù)結(jié)構(gòu)+定義在此數(shù)據(jù)結(jié)構(gòu)上的一組操作=抽象數(shù)據(jù)類型例如:矩陣+(求轉(zhuǎn)置、加、乘、 求逆、求特征值) 構(gòu)成一個矩陣的抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型的描述抽象數(shù)據(jù)類型可用(D,S,P)三元組表示 其中,D是數(shù)據(jù)對象,S是D上的關(guān)系集,P是對D的基本操作集。

ADT抽象數(shù)據(jù)類型名{

數(shù)據(jù)對象:〈數(shù)據(jù)對象的定義〉

數(shù)據(jù)關(guān)系:〈數(shù)據(jù)關(guān)系的定義〉

基本操作:〈基本操作的定義〉 }ADT抽象數(shù)據(jù)類型名其中,數(shù)據(jù)對象、數(shù)據(jù)關(guān)系用偽碼描述;基本操作定義格式為 基本操作名(參數(shù)表) 初始條件:〈初始條件描述〉

操作結(jié)果:〈操作結(jié)果描述〉基本操作有兩種參數(shù):賦值參數(shù)只為操作提供輸入值;引用參數(shù)以&打頭,除可提供輸入值外,還將返回操作結(jié)果?!俺跏紬l件”描述了操作執(zhí)行之前數(shù)據(jù)結(jié)構(gòu)和參數(shù)應(yīng)滿足的條件,若不滿足,則操作失敗,并返回相應(yīng)出錯信息?!安僮鹘Y(jié)果”說明了操作正常完成之后,數(shù)據(jù)結(jié)構(gòu)的變化狀況和應(yīng)返回的結(jié)果。若初始條件為空,則省略之。抽象數(shù)據(jù)類型的表示和實現(xiàn)

抽象數(shù)據(jù)類型可以通過固有數(shù)據(jù)類型(高級編程語言中已實現(xiàn)的數(shù)據(jù)類型)來實現(xiàn)抽象數(shù)據(jù)類型類class數(shù)據(jù)對象數(shù)據(jù)成員基本操作成員函數(shù)(方法)例如,抽象數(shù)據(jù)類型復(fù)數(shù)的定義:

數(shù)據(jù)對象:

D={e1,e2|e1,e2∈RealSet}

數(shù)據(jù)關(guān)系:

R1={<e1,e2>|e1是復(fù)數(shù)的實數(shù)部分

|e2

是復(fù)數(shù)的虛數(shù)部分}ADTComplex{基本操作:

AssignComplex(&Z,v1,v2)操作結(jié)果:構(gòu)造復(fù)數(shù)Z,其實部和虛部分別被賦以參數(shù)v1和v2的值。

DestroyComplex(&Z)操作結(jié)果:復(fù)數(shù)Z被銷毀。

GetReal(Z,&realPart)初始條件:復(fù)數(shù)已存在。操作結(jié)果:用realPart返回復(fù)數(shù)Z的實部值。

GetImag(Z,&ImagPart)初始條件:復(fù)數(shù)已存在。操作結(jié)果:用ImagPart返回復(fù)數(shù)Z的虛部值。

Add(z1,z2,&sum)初始條件:z1,z2是復(fù)數(shù)。操作結(jié)果:用sum返回兩個復(fù)數(shù)z1,z2的和值。}ADTComplex假設(shè):z1和z2是上述定義的復(fù)數(shù)則Add(z1,z2,z3)操作的結(jié)果z3=z1+z2即為用戶企求的結(jié)果1.4算法和算法分析算法(Algorithm)定義算法的特性算法設(shè)計的要求算法描述工具算法性能分析算法(Algorithm)定義解決某一特定問題的具體步驟的描述,是指令的有限、有序序列。算法的特性一算法設(shè)計的要求正確性可讀性健壯性(魯棒性)高效率與低存儲量正確性實例:例:求n個數(shù)的最大值max=0;for(i=1;i<=n;i++){scanf(“%f”,&x);if(x>max)max=x;}可讀性健壯性高效率與低存儲量算法描述工具1.算法、語言、程序的關(guān)系⑴算法:描述了數(shù)據(jù)對象的元素之間的關(guān)系(包括數(shù)據(jù)邏輯關(guān)系、存貯關(guān)系描述)。⑵描述算法的工具:(自然語言、框圖或高級程序設(shè)計語言)算法的描述可用自然語言、框圖或高級程序設(shè)計語言,自然語言簡單但易于產(chǎn)生二義??驁D直觀但不擅長表達(dá)數(shù)據(jù)組織結(jié)構(gòu),而其中以高級程序語言較為準(zhǔn)確但又比較嚴(yán)謹(jǐn)。⑶程序是算法在計算機中的實現(xiàn)(與所用計算機及所用語言有關(guān))2.設(shè)計實現(xiàn)算法過程步驟:

找出與求解有關(guān)的數(shù)據(jù)元素之間的關(guān)系(建立結(jié)構(gòu)關(guān)系)

確定在某一數(shù)據(jù)對象上所施加運算

考慮數(shù)據(jù)元素的存儲表示

選擇描述算法的語言

設(shè)計實現(xiàn)求解的算法,并用程序語言加以描述。算法描述工具高級語言描述算法,具有嚴(yán)格準(zhǔn)確的優(yōu)點,但用于描述算法,也有語言細(xì)節(jié)過多的弱點,為此采用類語言形式本課程算法采用類C語言作為描述工具.類C語言簡要說明1.

預(yù)定義常量和類型本書中用到以下常量符號,如True、False、MAXSIZE等,約定用如下宏定義預(yù)先定義:

#define

TRUE

1

#define

FALSE

0

#define

OK

1

#define

ERROR

0#define

INFEASIBLE-1#define

OVERFLOW-2//Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼

typeintStatus;類C語言簡要說明2.本書中所有的算法都以如下所示函數(shù)的形式加以表示,其中的結(jié)構(gòu)類型使用前面已有的定義。

函數(shù)的形式:

函數(shù)類型

函數(shù)名([形式參數(shù)及說明]){

//算法說明

語句序列}

//函數(shù)名類C語言簡要說明3.

賦值語句簡單賦值:(1)變量名=表達(dá)式;

(2)變量++;

(3)變量--;串聯(lián)賦值:變量1=變量2=變量3=…=變量k=表達(dá)式;成組賦值:(變量1,變量2,變量3,…變量k=(表達(dá)式1,表達(dá)式2,表達(dá)式3,…表達(dá)式k);結(jié)構(gòu)名=結(jié)構(gòu)名;結(jié)構(gòu)名=(值1,……,值k);變量名[]=表達(dá)式;

變量名[起始下標(biāo)..終止下標(biāo)]=變量名[起始下標(biāo)..終止下標(biāo)];交換賦值:變量名←→變量名條件賦值:變量名=條件表達(dá)式?表達(dá)式1:表達(dá)式2;類C語言簡要說明4.

條件選擇語句(1)

if(〈表達(dá)式〉)語句;(2)

if(〈表達(dá)式〉)語句1;

else

語句2;(3)

開關(guān)語句1switch

(<表達(dá)式>){

case

值1:

語句組1;

break;

case

值2:

語句組2;

break;……

case

值n:

語句組n;

break;

[default:

語句組;]

}類C語言簡要說明(4)

開關(guān)語句2switch

{

case

條件1:

語句組1;

break;

case

條件2:

語句組2;

break;……

case

條件n:

語句組n;

break;

[default:

語句組;]

}類C語言簡要說明5.

循環(huán)語句(1)

for語句for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>){循環(huán)體語句;}(2)

while語句while(<條件表達(dá)式>)

{循環(huán)體語句;

}(3)

do-while語句do{循環(huán)體語句}while(<條件表達(dá)式>)類C語言簡要說明6.

結(jié)束語句函數(shù)結(jié)束語句return表達(dá)式;return;switch結(jié)束語句break;異常結(jié)束語句exit(異常代碼);類C語言簡要說明7.

輸入和輸出語句輸入語句scanf([格式串],變量1,變量2,……,變量n);輸出語句printf(([格式串],表達(dá)式1,表達(dá)式2,……表達(dá)式n);switch結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論