數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)

線性表

1. 線性表的邏輯結(jié)構(gòu)定義、抽象數(shù)據(jù)類型定義。

2. 線性表的兩種存儲(chǔ)結(jié)構(gòu)的不同特點(diǎn)及其適用場(chǎng)合。

順序存儲(chǔ):借助元素在存儲(chǔ)器中的相對(duì)位置來表示元素之間的邏輯關(guān)系。

鏈?zhǔn)酱鎯?chǔ):借助指示元素存儲(chǔ)地址的指針來表示元素之間的邏輯關(guān)系。

順序表和鏈表的優(yōu)缺點(diǎn)比較(正好是相對(duì)的)。

3. 在線性表的兩種存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)基本操作的算法。

查找、插入、刪除、歸并、分解、就地逆置等。

注意:?jiǎn)捂湵砼c雙向鏈表、普通鏈表與循環(huán)鏈表的區(qū)別。

雙向鏈表中結(jié)點(diǎn)的特征:p=p->next->prior=p->prior->next

因此,在插入和刪除時(shí),對(duì)單鏈表,必須要知道第i-1個(gè)結(jié)點(diǎn)

的地址,而對(duì)雙向鏈表則不必如此。

例1.已知la是不帶頭結(jié)點(diǎn)的單鏈表的頭指針,試編寫逆序

輸出表中各元素值的遞歸算法。

例2.按遞增有序輸出單鏈表中的元素值。

例3.實(shí)現(xiàn)集合的交、并、差等運(yùn)算。

堆和隊(duì)列

1. 棧的定義、特征以及抽象數(shù)據(jù)類型定義。

會(huì)靈活運(yùn)用棧的特征(后進(jìn)先出)。

例:設(shè)輸入元素為1, 2, 3, P, A,輸入次序?yàn)?23PA,元素經(jīng)過棧后到達(dá)輸出序列,當(dāng)所有元素均到達(dá)輸出序列后,有哪些序列可以作為高級(jí)語言的變量名?

2.棧的存儲(chǔ)結(jié)構(gòu)順序棧:棧滿和??盏臈l件

鏈棧

入棧、出棧、取棧頂元素等基本操作的實(shí)現(xiàn)算法。

3.棧的應(yīng)用表達(dá)式計(jì)算:了解基本思想、棧在算法中的作用

實(shí)現(xiàn)遞歸算法

4. 隊(duì)列的定義、特征以及抽象數(shù)據(jù)類型定義。

5.隊(duì)列的存儲(chǔ)結(jié)構(gòu)(順序)循環(huán)隊(duì)列

鏈隊(duì)列

入隊(duì)、出隊(duì)、取隊(duì)頭元素等基本操作的實(shí)現(xiàn)算法。

循環(huán)隊(duì)列:入隊(duì):Q->queue[Q->rear]=x;

Q->rear=(Q->rear+1)%MaxQueueSize;

出隊(duì):*d=Q->queue[Q->front];

Q->front=(Q->front+1) %MaxQueueSize;

判斷隊(duì)滿和隊(duì)空:(1)少用一個(gè)存儲(chǔ)單元;

(2)設(shè)置一個(gè)標(biāo)志位;

(3)設(shè)置一個(gè)計(jì)數(shù)器。

6. 隊(duì)列的應(yīng)用:結(jié)合后面二叉樹和圖的遍歷算法。

數(shù)組

1. 數(shù)組采用行優(yōu)先或列優(yōu)先順序存儲(chǔ)時(shí),數(shù)組元素的

存儲(chǔ)地址的計(jì)算方法(重點(diǎn)掌握二維、三維數(shù)組)。

2. 特殊矩陣進(jìn)行壓縮存儲(chǔ)時(shí)下標(biāo)變換公式的推導(dǎo)方法。

要求掌握上三角矩陣、下三角矩陣、對(duì)稱矩陣、三對(duì)角

矩陣分別按行優(yōu)先或列優(yōu)先壓縮存儲(chǔ)時(shí)的下標(biāo)變換公式。

1. 樹、二叉樹的結(jié)構(gòu)特性;二叉樹的五種基本形態(tài)。

2. 滿二叉樹和完全二叉樹的定義、特點(diǎn);二叉樹的性質(zhì)

(五條,其中有兩條只對(duì)完全二叉樹滿足)。

1、若深度從0開始計(jì)算則第i層有2^i個(gè)結(jié)點(diǎn)

2、共有2^(i+1) -1個(gè)結(jié)點(diǎn)

3、n0=n2+1

4、完全二叉樹有n個(gè)結(jié)點(diǎn),則他的深度為log2(n+1)-1

5、完全二叉樹:第i個(gè)結(jié)點(diǎn)的左孩子在2i+1 右孩子是2i+2

3. 二叉樹的遍歷策略及算法(遞歸和非遞歸)。由前序

和中序遍歷序列、中序和后序遍歷序列能唯一構(gòu)造出一棵二叉樹。

會(huì)靈活運(yùn)用遍歷算法求解其他問題。

例1.輸出某類結(jié)點(diǎn)的值或求某類結(jié)點(diǎn)的個(gè)數(shù)(如葉子結(jié)點(diǎn))。

例2.判定一棵二叉樹是否為二叉排序樹(采用中序遍歷策略,判斷正在訪問的結(jié)點(diǎn)與它的前驅(qū)結(jié)點(diǎn)之間是否遞增有序)。

4. 樹的三種存儲(chǔ)結(jié)構(gòu)及其特點(diǎn)(雙親表示法、孩子表示法和孩子兄弟表示法,重點(diǎn)掌握孩子兄弟表示法);樹、

森林與二叉樹的轉(zhuǎn)換方法。

5. 樹的遍歷方法:

先根(對(duì)應(yīng)二叉樹的前序遍歷)

后根(對(duì)應(yīng)二叉樹的中序遍歷)

森林的遍歷方法:先序和中序。

6.

Huffman樹的概念及構(gòu)造方法,哈夫曼編碼的設(shè)計(jì)。

注意:Huffman樹是擴(kuò)充二叉樹(只含度為0和度為2的結(jié)點(diǎn))。

補(bǔ)充作業(yè):寫出二叉樹的中序和后序遍歷的非遞歸算法。

voidNInOrder(BiTreeNode*bt)

/*中序遍歷二叉樹bt的非遞歸算法*/

{BiTreeNode*stack [MaxNode], *p;

int top;

if (bt==NULL)

return;

top=0;p=bt;

while (! (p==NULL&&top==0))

{ while (p!=NULL)

{ if (top

{stack[top]=p;

top++;

}

else {printf(“\noverflow!”);

return;

}p=p->leftChild;/*訪問左子樹*/

}/*while (p!=NULL)*/

if (top==0) return;

else { top--;

p=stack[top];

visit (p);/*訪問根結(jié)點(diǎn)*/

p=p->rightChild;/*訪問右子樹*/

}

}/*while*/

}

typedefstruct

{BiTreeNode*pt;

inttag;

} Node;

voidNPostOrder(BiTreeNode*bt)

/*后序遍歷二叉樹bt的非遞歸算法*/

{ Node stack [MaxNode],BiTreeNode*p;

inttop;

if (bt==NULL)

return;

top=0;p=bt;

while (! (p==NULL&&top==0))

{ while (p!=NULL)

{ if (top

{stack[top].pt=p;stack[top].tag=1;

top++;

}else {printf(“\noverflow!”);

return;

}

p=p->leftChild;/*訪問左子樹*/

}/*while (p!=NULL)*/

if (top==0) return;

else {if (stack[top-1].tag==1)

{ p=stack[top-1].pt;stack[top-1].tag=2;

p=p->rightChild;/*訪問右子樹*/

}

else { top--;

visit (stack[top].pt);/*訪問根結(jié)點(diǎn)*/

}

}

}/*while*/

}

圖的定義、基本術(shù)語。

(如:無向完全圖、有向完全圖、路徑、回路、連通圖和連通分量、強(qiáng)連通圖和強(qiáng)連通分量、連通圖的生成樹)

無向完全圖:弧數(shù)量為Cn2 的圖,有向完全圖的弧數(shù)量為An2

連通圖 :任意兩個(gè)結(jié)點(diǎn)能連通

連通分量:在無向圖中,極大的連通子圖成為圖的連通分量

連通圖的生成樹:一個(gè)連通圖的生成樹是一個(gè)極小連通子圖,他含有途中全部定點(diǎn)n但只有足以構(gòu)成一棵樹的n-1條邊。

注意:邊數(shù)與頂點(diǎn)數(shù)、度之間的關(guān)系:

完全圖、連通圖以及生成樹的特點(diǎn)。

判斷圖中是否存在回路的方法。?

無向圖中結(jié)點(diǎn)的度均>=2 則改圖一定存在回路

利用BFS,在遍歷過程中,為每個(gè)節(jié)點(diǎn)標(biāo)記一個(gè)深度deep,如果存在某個(gè)節(jié)點(diǎn)為v,除了其父節(jié)點(diǎn)u外,還存在與v相鄰的節(jié)點(diǎn)w使得deep[v]<=deep[w]的,那么該圖一定存在回路;

2.

圖的各種存儲(chǔ)結(jié)構(gòu)(重點(diǎn)掌握鄰接矩陣和鄰接表)的

特點(diǎn)及構(gòu)造方法。

注意:圖和網(wǎng)的區(qū)別。

3. 圖的兩種遍歷策略及遍歷算法(深度優(yōu)先和廣度優(yōu)先)。

會(huì)靈活運(yùn)用遍歷算法求解其他問題。

4. 圖的應(yīng)用

(1)生成樹的定義、類型(深度優(yōu)先和廣度優(yōu)先生成樹);

最小生成樹的定義;

Kruskal算法和Prim算法(破圈法)求網(wǎng)的最小生成樹的方法(注意:記住算法特點(diǎn),不要混淆)。

(2)Dijkstra算法求單源最短路徑的方法(有向網(wǎng)和無向網(wǎng)都適用)。

查找

1.靜態(tài)查找表的順序查找、折半查找方法的實(shí)現(xiàn)算法;

描述折半查找過程的二叉判定樹的構(gòu)造方法;三種方

法的比較。

2.

二叉排序樹的定義、構(gòu)造以及查找、插入的實(shí)現(xiàn)方法。

注意:二叉排序樹按中序遍歷是遞增有序序列。

3.

哈希表的定義、構(gòu)造及查找方法,重點(diǎn)掌握開放定址法和鏈地址法處理沖突時(shí)的構(gòu)造方法。

開放地址法:線性探測(cè)、平方再散列法(-1^2,1^2,-2^2,2^2....)

鏈地址法:將沖突的結(jié)點(diǎn)連接在地址上,采用鏈?zhǔn)浇Y(jié)構(gòu)

4.

根據(jù)公式計(jì)算各種查找方法在等概率情況下的平均查找長(zhǎng)度。

內(nèi)部排序

1.

排序的定義,排序方法“穩(wěn)定”或“不穩(wěn)定”的含義。

注意:希爾排序、直接選擇排序、堆排序、快速排序是不穩(wěn)定的排序算法。

2.

各種排序方法的基本思想、算法特點(diǎn)、排序過程

以及它們的時(shí)間和空間復(fù)雜度分析。

(包括基本算法及它們的改進(jìn)算法:直接插入排序、

折半插入排序、希爾排序、直接選擇排序、堆排序、

冒泡排序、快速排序、歸并排序及基數(shù)排序)

會(huì)根據(jù)實(shí)際應(yīng)用情況選擇合適的排序算法。


錯(cuò)誤題目總結(jié)

1、數(shù)據(jù)的最小單位是數(shù)據(jù)項(xiàng)

2、時(shí)間復(fù)雜度不受初始狀態(tài)影響而恒為 nlog2n 的是 堆排序。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因?yàn)橹熬蛷?fù)習(xí)完數(shù)據(jù)結(jié)構(gòu)了,所以為了保持記憶,整理了一份復(fù)習(xí)綱要,復(fù)習(xí)的時(shí)候可以看著綱要想具體內(nèi)容。 樹 樹的基本...
    牛富貴兒閱讀 7,503評(píng)論 3 10
  • 課程介紹 先修課:概率統(tǒng)計(jì),程序設(shè)計(jì)實(shí)習(xí),集合論與圖論 后續(xù)課:算法分析與設(shè)計(jì),編譯原理,操作系統(tǒng),數(shù)據(jù)庫概論,人...
    ShellyWhen閱讀 2,460評(píng)論 0 3
  • 第一章 緒論 什么是數(shù)據(jù)結(jié)構(gòu)? 數(shù)據(jù)結(jié)構(gòu)的定義:數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。 第二章...
    SeanCheney閱讀 5,984評(píng)論 0 19
  • 本文涉及更多的是概念,代碼部分請(qǐng)參考之前寫過的 2 篇博客 基于Javascript的排序算法基本數(shù)據(jù)結(jié)構(gòu)和查找算...
    faremax閱讀 1,412評(píng)論 0 2
  • 不要問我為什么腳步匆忙因?yàn)槲艺s往課堂什么時(shí)候?qū)W習(xí)這么積極?不好意思我根本沒把聽課放心上只是老師要點(diǎn)名翹課也需要膽...
    醉后長(zhǎng)亭閱讀 300評(píng)論 1 3

友情鏈接更多精彩內(nèi)容