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