第一篇:《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!第一章緒論視頻為數(shù)據(jù)結(jié)構(gòu)1&2。
同步教學(xué)視頻下載:
數(shù)據(jù)結(jié)構(gòu)1:http://v.youku.com/v_show/id_XMzc1MTYxNzY=.html?f=2175086 數(shù)據(jù)結(jié)構(gòu)2:http://v.youku.com/v_show/id_XMzc1MTYzNTI=.html?f=2175086 第一章 緒論..................................................................................................................1
1.1數(shù)據(jù)結(jié)構(gòu)討論的范疇.......................................................................................1 1.2基本概念...........................................................................................................2 1.3算法及其量度...................................................................................................3 本章小結(jié).................................................................................................................3
第一章 緒論
1.1數(shù)據(jù)結(jié)構(gòu)討論的范疇
數(shù)據(jù)結(jié)構(gòu)討論什么?
簡(jiǎn)單的回答是數(shù)據(jù)結(jié)構(gòu)是一門和程序設(shè)計(jì)密切相關(guān)的課程。有言:“算法+數(shù)據(jù)結(jié)構(gòu)=程序設(shè)計(jì)”?!绹?guó)計(jì)算機(jī)教授Wirth教授.程序設(shè)計(jì):為計(jì)算機(jī)處理問題編制一組指令集——對(duì)某類信息進(jìn)行處理 算法:處理問題的策略——如何進(jìn)行處理,即處理的策略 數(shù)據(jù)結(jié)構(gòu):?jiǎn)栴}的數(shù)據(jù)模型——處理問題的信息如何表示
任何程序設(shè)計(jì)問題都包含算法和數(shù)據(jù)結(jié)構(gòu)兩方面的問題,例如數(shù)值計(jì)算和非數(shù)值計(jì)算的程序設(shè)計(jì)問題 數(shù)值計(jì)算的程序設(shè)計(jì)問題
例,如根據(jù)地球上不同地方的重力值變化,要得到一個(gè)雖緯度高低不同重力值變化的線性方程。其數(shù)據(jù)模型就是該方程,計(jì)算機(jī)求解的問題即數(shù)學(xué)所要研究的問題。
非數(shù)值計(jì)算的程序設(shè)計(jì)問題——現(xiàn)今計(jì)算機(jī)主要處理的問題
1/3
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
例:編寫一與計(jì)算機(jī)下棋的程序
算法:下棋的規(guī)則和計(jì)算對(duì)棋手針對(duì)的策略 模型:棋盤棋子如何表示
概括的說,數(shù)據(jù)結(jié)構(gòu)討論的是非數(shù)值性計(jì)算的程序設(shè)計(jì)問題現(xiàn)實(shí)世界實(shí)體的數(shù)學(xué)模型(非數(shù)值計(jì)算)及其上的操作在計(jì)算機(jī)中表示和實(shí)現(xiàn)。
1.2基本概念
數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù):所有能被輸入到計(jì)算機(jī)中,且被計(jì)算機(jī)處理的符號(hào)的集合,計(jì)算機(jī)操作的對(duì)象的總稱;是計(jì)算機(jī)處理的信息的某種特定的符號(hào)表示形式。
數(shù)據(jù)元素:數(shù)據(jù)中的一個(gè)“個(gè)體”,是數(shù)據(jù)結(jié)構(gòu)中的討論的基本單位。不是最小單位。課時(shí)簡(jiǎn)單的字符,或者是多個(gè)數(shù)據(jù)項(xiàng)。數(shù)據(jù)元素師數(shù)據(jù)項(xiàng)的集合 數(shù)據(jù)項(xiàng):數(shù)據(jù)結(jié)構(gòu)中討論的最小單位?!獢?shù)據(jù)屬性。若數(shù)據(jù)項(xiàng)中還有數(shù)據(jù)則該數(shù)據(jù)項(xiàng)被稱為組合項(xiàng)。
例:運(yùn)動(dòng)員(數(shù)據(jù)元素),姓名、出生日期(年月日)(組合項(xiàng))、籍貫等(數(shù)據(jù)項(xiàng))。
數(shù)據(jù)結(jié)構(gòu):帶結(jié)構(gòu)的數(shù)據(jù)元素的集合。結(jié)構(gòu),數(shù)據(jù)元素之間存在的關(guān)系。次序關(guān)系等。
數(shù)據(jù)元素之間的關(guān)系——數(shù)據(jù)的邏輯關(guān)系,主要有四類: 線性結(jié)構(gòu) 樹形結(jié)構(gòu) 圖形結(jié)構(gòu) 集合結(jié)構(gòu)
以后將討論的數(shù)體結(jié)構(gòu)為以上兩種。
數(shù)據(jù)結(jié)構(gòu)的形式定義是一個(gè)二元組(D,S),D是元素的有限集,S是關(guān)系的有限集。只說明里數(shù)據(jù)結(jié)構(gòu)的一方面,強(qiáng)調(diào)的是數(shù)據(jù)結(jié)構(gòu)中邏輯關(guān)系。另一重要的方面是數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。也就是怎樣在計(jì)算機(jī)中表示數(shù)據(jù)的邏輯結(jié)構(gòu)。存儲(chǔ)結(jié)構(gòu)就是邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示。數(shù)據(jù)元素的表示:二進(jìn)制位的位串表示。
2/3
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
關(guān)系的表示:有序?qū)﹃P(guān)系集合表示。
有序?qū)υ谟?jì)算機(jī)中的表示方法:
順序印象:一個(gè)接一個(gè),位置固定,有順序。
鏈?zhǔn)接∠螅何恢秒S意,則需要一信息表示其聯(lián)系——指針。指向其所聯(lián)系的元素的位置,使之聯(lián)系在一起。
數(shù)據(jù)類型:一個(gè)值的集合和定義在此集合上的一組操作的總稱。
抽象數(shù)據(jù)類型(ADT):一個(gè)數(shù)據(jù)模型以及定義在此數(shù)據(jù)模型上的一組操作。特征:數(shù)據(jù)抽象和數(shù)據(jù)封裝。描述方法:用一三元組(D,S,P),D元素集,S關(guān)系集,P基本操作集。(基本操作的參數(shù),一、賦值參數(shù),只為操作提供輸入值;
二、引用參數(shù),即可提供輸入值,還將返回操作的結(jié)果)表現(xiàn)和實(shí)現(xiàn):用固有的數(shù)據(jù)類型來實(shí)現(xiàn)。數(shù)體結(jié)構(gòu)和其操作實(shí)質(zhì)上是一整體。
1.3算法及其量度
算法:簡(jiǎn)單地說就是對(duì)問題求解的描述,定義為算法是為了解決某類問題而規(guī)定的一個(gè)有限長(zhǎng)的操作序列。特征:有窮性 確定性 可行性 有輸入 有輸出。要求(目標(biāo)):正確性 可讀性 健壯性 高效率與低存儲(chǔ)量需求 算法衡量的方法和準(zhǔn)則:事后統(tǒng)計(jì)法和事前分析估計(jì)法
時(shí)間復(fù)雜度:隨著程序的運(yùn)行,算法執(zhí)行時(shí)間的增長(zhǎng)率和某規(guī)模函數(shù)f(n)的增長(zhǎng)率相同,T(n)=O(f(n)),T(n)即為算法的時(shí)間復(fù)雜度。
如何估算時(shí)間復(fù)雜度:默認(rèn)為與原重復(fù)操作的執(zhí)行次數(shù)之和成正比。一般情況看算法的循環(huán)部分的內(nèi)容。
空間復(fù)雜度:隨著程序的運(yùn)行程序所要存儲(chǔ)的數(shù)據(jù)空間變化與某規(guī)模函數(shù)g(n)變化相同。S(n)=O(g(n)),S(n)即為算法的空間復(fù)雜度。
本章小結(jié)
1、熟悉各名詞、術(shù)語的含義,掌握基本概念。
2、理解算法的五個(gè)要素的確切含義。
3、掌握計(jì)算語句頻度和估算算法時(shí)間復(fù)雜度的方法。
3/3
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
第二篇:《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!第二章 線性表視頻為數(shù)據(jù)結(jié)構(gòu)3&4&5&6(~38分鐘)
同步教學(xué)視頻下載:
數(shù)據(jù)結(jié)構(gòu)3:?f=2175086 數(shù)據(jù)結(jié)構(gòu)4:?f=2175086 數(shù)據(jù)結(jié)構(gòu)5:?f=2175086 數(shù)據(jù)結(jié)構(gòu)6:?f=2175086
第二章 線性表..........................12.1線性表的抽象數(shù)據(jù)類型定義...................22.2線性表類型的實(shí)現(xiàn)——順序映像..................2
2.3線性表類型的實(shí)現(xiàn)——鏈?zhǔn)接诚?.................2
2.4線性表的一個(gè)應(yīng)用——一元多項(xiàng)式的表示................3本章小結(jié)......................3
第二章 線性表
線性結(jié)構(gòu)是一個(gè)元素的有序(次序)集?;咎卣鳎罕卮嬖谖ㄒ坏摹暗谝粋€(gè)元素”和“最后的元素”,除最后元素都有唯一的后繼,除第一個(gè)元素都有唯一的前驅(qū)。
1/
4本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
2.1線性表的抽象數(shù)據(jù)類型定義
基本操作:…
2.2線性表類型的實(shí)現(xiàn)——順序映像
由線性表的順序映像得到的存儲(chǔ)結(jié)構(gòu)稱為順序表
在順序表中線性表的基本操作:…
優(yōu)點(diǎn):可以對(duì)每一個(gè)數(shù)據(jù)元素進(jìn)行隨機(jī)的存取,表長(zhǎng)是顯值。
缺點(diǎn):對(duì)插入與刪除都要對(duì)元素進(jìn)行移動(dòng)。
2.3線性表類型的實(shí)現(xiàn)——鏈?zhǔn)接诚?/p>
由線性表的鏈?zhǔn)接诚竦玫降拇鎯?chǔ)結(jié)構(gòu)稱為鏈表
2/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
在單鏈表中線性表的基本操作:…
其它形式的鏈表:
2.4線性表的一個(gè)應(yīng)用——一元多項(xiàng)式的表示
本章小結(jié)
1、了解線性表的邏輯結(jié)構(gòu)特性是數(shù)據(jù)元素之間存在著線性關(guān)系,在計(jì)算機(jī)中表示這種關(guān)系的兩類不同的存儲(chǔ)結(jié)構(gòu)是順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。用前者表示的的線性表簡(jiǎn)稱為順序表,用后者表示的線性表簡(jiǎn)稱為鏈表
2、熟悉掌握這兩類存儲(chǔ)結(jié)構(gòu)的描述方法,以及線性表的各種基本操作的實(shí)現(xiàn)。
3、能夠從時(shí)間和空間復(fù)雜度的角度綜合比較線性表的兩種存儲(chǔ)結(jié)構(gòu)的不同特點(diǎn)
3/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
及其使用的場(chǎng)合。
4/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
第三篇:《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!第二章 線性表視頻為數(shù)據(jù)結(jié)構(gòu)3&4&5&6(~38分鐘)同步教學(xué)視頻下載:
數(shù)據(jù)結(jié)構(gòu)3:http://v.youku.com/v_show/id_XMzc1MTY0OTY=.html?f=2175086 數(shù)據(jù)結(jié)構(gòu)4:http://v.youku.com/v_show/id_XMzc1MTY2NzI=.html?f=2175086 數(shù)據(jù)結(jié)構(gòu)5:http://v.youku.com/v_show/id_XMzc1MTY3MjA=.html?f=2175086 數(shù)據(jù)結(jié)構(gòu)6:http://v.youku.com/v_show/id_XMzc1MTY4NjA=.html?f=2175086 第二章 線性表..............................................................................................................1
2.1線性表的抽象數(shù)據(jù)類型定義...........................................................................2 2.2線性表類型的實(shí)現(xiàn)——順序映像...................................................................2 2.3線性表類型的實(shí)現(xiàn)——鏈?zhǔn)接诚?..................................................................2 2.4線性表的一個(gè)應(yīng)用——一元多項(xiàng)式的表示...................................................3 本章小結(jié).................................................................................................................3
第二章 線性表
線性結(jié)構(gòu)是一個(gè)元素的有序(次序)集?;咎卣鳎罕卮嬖谖ㄒ坏摹暗谝粋€(gè)元素”和“最后的元素”,除最后元素都有唯一的后繼,除第一個(gè)元素都有唯一的前驅(qū)。
1/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
2.1線性表的抽象數(shù)據(jù)類型定義
基本操作:…
2.2線性表類型的實(shí)現(xiàn)——順序映像
由線性表的順序映像得到的存儲(chǔ)結(jié)構(gòu)稱為順序表
在順序表中線性表的基本操作:…
優(yōu)點(diǎn):可以對(duì)每一個(gè)數(shù)據(jù)元素進(jìn)行隨機(jī)的存取,表長(zhǎng)是顯值。缺點(diǎn):對(duì)插入與刪除都要對(duì)元素進(jìn)行移動(dòng)。
2.3線性表類型的實(shí)現(xiàn)——鏈?zhǔn)接诚?/p>
由線性表的鏈?zhǔn)接诚竦玫降拇鎯?chǔ)結(jié)構(gòu)稱為鏈表
2/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
在單鏈表中線性表的基本操作:… 其它形式的鏈表:
2.4線性表的一個(gè)應(yīng)用——一元多項(xiàng)式的表示
本章小結(jié)
1、了解線性表的邏輯結(jié)構(gòu)特性是數(shù)據(jù)元素之間存在著線性關(guān)系,在計(jì)算機(jī)中表示這種關(guān)系的兩類不同的存儲(chǔ)結(jié)構(gòu)是順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。用前者表示的的線性表簡(jiǎn)稱為順序表,用后者表示的線性表簡(jiǎn)稱為鏈表
2、熟悉掌握這兩類存儲(chǔ)結(jié)構(gòu)的描述方法,以及線性表的各種基本操作的實(shí)現(xiàn)。
3、能夠從時(shí)間和空間復(fù)雜度的角度綜合比較線性表的兩種存儲(chǔ)結(jié)構(gòu)的不同特點(diǎn)
3/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!《數(shù)據(jù)結(jié)構(gòu)(C語言版)-清華大學(xué)出版社》復(fù)習(xí)總結(jié)(視頻+課本+截圖)
及其使用的場(chǎng)合。
4/4
本資料由網(wǎng)友IOU_520JRForever整理提供,僅供參考,如有好的建議或意見請(qǐng)與編者聯(lián)系,謝謝!
第四篇:數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼總結(jié)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)題目(程序?qū)崿F(xiàn)采用C語言)
題目1:猴子選王(學(xué)時(shí):3)
一堆猴子都有編號(hào),編號(hào)是1,2,3...m,這群猴子(m個(gè))按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n個(gè),該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。
要求:m及n要求從鍵盤輸入,存儲(chǔ)方式采用向量及鏈表兩種方式實(shí)現(xiàn)該問題求解。
//鏈表
#include
typedef struct _RingNode
{
int pos;
struct _RingNode *next;}RingNode, *RingNodePtr;
// 創(chuàng)建約瑟夫環(huán),pHead:鏈表頭指針,count:鏈表元素個(gè)數(shù) void CreateRing(RingNodePtr pHead, int count){
RingNodePtr pCurr = NULL, pPrev = NULL;
int i = 1;
pPrev = pHead;
while(--count > 0)
{
pCurr =(RingNodePtr)malloc(sizeof(RingNode));
i++;
pCurr->pos = i;
pPrev->next = pCurr;
pPrev = pCurr;
}
pCurr->next = pHead;// 構(gòu)成環(huán)狀鏈表 } void KickFromRing(RingNodePtr pHead, int n){
RingNodePtr pCurr, pPrev;
int i = 1;
// 計(jì)數(shù)
pCurr = pPrev = pHead;
while(pCurr!= NULL)
{
if(i == n)
{
// 踢出環(huán)
printf(“n%d”, pCurr->pos);
// 顯示出圈循序
pPrev->next = pCurr->next;
free(pCurr);
pCurr = pPrev->next;
i = 1;
}
pPrev = pCurr;
pCurr = pCurr->next;
if(pPrev == pCurr)
{
// 最后一個(gè)
printf(“nKing is %d”, pCurr->pos);
// 顯示出圈循序
free(pCurr);
break;
}
i++;
} }
int main(){
int n = 0, m = 0;
RingNodePtr pHead = NULL;
printf(“M(person count)= ”);
scanf(“%d”, &m);
printf(“N(out number)= ”);
scanf(“%d”, &n);
if(m <= 0 || n <= 0)
{
printf(“Input Errorn”);
return 0;
}
// 建立鏈表
pHead =(RingNodePtr)malloc(sizeof(RingNode));
pHead->pos = 1;
pHead->next = NULL;
CreateRing(pHead, m);// 開始出圈
printf(“nKick Order: ”);
KickFromRing(pHead, n);
printf(“n”);
system(“pause”);
return 0;}
//數(shù)組做:
#include
void SelectKing(int MonkeyNum, int CallNum);
void main(){
int MonkeyNum;
int CallNum;
/* 輸入猴子的個(gè)數(shù) */
printf(“Monkey Num = ”);
scanf(“%d”, &MonkeyNum);
/* 輸入M的值 */
printf(“Call Num = ”);
scanf(“%d”, &CallNum);
SelectKing(MonkeyNum, CallNum);
}
void SelectKing(int MonkeyNum, int CallNum){
int *Monkeys;// 申請(qǐng)一個(gè)數(shù)組,表示所有的猴子;
int counter = 0;//計(jì)數(shù),當(dāng)計(jì)數(shù)為猴子個(gè)數(shù)時(shí)表示選到最后一個(gè)猴子了;
int position = 0;// 位置,數(shù)組的下標(biāo),輪流遍歷數(shù)組進(jìn)行報(bào)數(shù);
int token = 0;// 令牌,將報(bào)數(shù)時(shí)數(shù)到M的猴子砍掉;
// 申請(qǐng)猴子個(gè)數(shù)大小的數(shù)組,把桌子擺上。
Monkeys =(int *)malloc(sizeof(int)* MonkeyNum);
if(NULL == Monkeys)
{
printf(“So many monkeys, system error.n”);
return;
}
// 將數(shù)組的所有內(nèi)容初始化為0,被砍掉的猴子設(shè)置為1
memset(Monkeys, 0, sizeof(int)*MonkeyNum);
// 循環(huán),直到選中大王
while(counter!= MonkeyNum)
{
// 如果這個(gè)位置的猴子之前沒有砍掉,那么報(bào)數(shù)有效
if(Monkeys[position] == 0)
{
token++;// 成功報(bào)數(shù)一個(gè),令牌+1,繼續(xù)報(bào)數(shù)直到等于M
// 如果報(bào)數(shù)到M,那么將這個(gè)猴子砍去
if(token == CallNum)
{
Monkeys[position] = 1;// 設(shè)置為1,表示砍去
counter++;// 計(jì)數(shù)增加
token = 0;// 設(shè)置為0,下次重新報(bào)數(shù)
// 如果是最后一個(gè)猴子,把它的位置打印,這個(gè)就是大王了
if(counter == MonkeyNum)
{
printf(“The king is the %d monkey.n”, position+1);
}
}
}
// 下一個(gè)猴子報(bào)數(shù)
position =(position + 1)%MonkeyNum;
}
// 釋放內(nèi)存,開頭為所有猴子創(chuàng)建的桌子
free(Monkeys);
return;}
題目2 :字符逆轉(zhuǎn)(學(xué)時(shí):3)
從鍵盤讀入一個(gè)字符串,把它存入一個(gè)鏈表(每個(gè)結(jié)點(diǎn)存儲(chǔ)1個(gè)字符),并按相反的次序?qū)⒆址敵龅斤@示屏。
#include
struct node {
struct node *prev;
char c;
struct node *next;};struct node *input(struct node *top);int main(void){ struct node T,*top=&T,*bottom=&T,*p=NULL;T.prev=NULL;T.next=NULL;T.c='