2
3
4
5
6
7
8
9
10
三、棧和隊列
1、知識點:
● 棧的定義:操作受限的線性表
● 特點:后進先出
● 棧的存儲結(jié)構(gòu):順序,鏈接
/ push(s,d)
● 棧的基本操作:
\ pop(s)
棧定義:
struct {
datatype data[max_num];
int top;
};
●隊列定義
特點:先進先出
/入隊列 in_queue(Q,x)
●隊列的操作:
\出隊列 del_queue(Q)
●隊列存儲結(jié)構(gòu):
鏈隊列:
Typedef struct node{
Datatype data;
Struct node *next;
}NODE;
Typedef struct {
NODE *front;
NODE *rear;
}Queue;
順序隊列:
struct {
datatype data[max_num];
int front,rear;
};
問題:
隊列ó線性表
假溢出<=循環(huán)隊列
隊列滿,隊列空條件一樣<=浪費一個存儲空間
遞歸
定義:問題規(guī)模為N的解依賴于小規(guī)模問題的解。問題的求解通過小規(guī)模問題的解得到。
包括二個步驟:
1) 遞推 6!=>5!=>4!=>3!=>2!=>1!=>0!
2) 回歸 720<=120<=24<=6 <=2 <=1 <=0
遞歸工作棧實現(xiàn)遞歸的機制。
2、有關(guān)算法:
1) 順序,鏈表結(jié)構(gòu)下的出棧,入棧
2) 循環(huán),隊列的入隊列,出隊列。
3) 鏈隊列的入隊列,出隊列。
4) 表達式計算:后綴表達式 35+6/4368/+*-
中綴表達式 (3+5)/6-4*(3+6/8)
由于中綴比較難處理,計算機內(nèi)一般先將中綴轉(zhuǎn)換為后綴。
運算:碰到操作數(shù),不運算,碰到操符,運算其前兩個操作數(shù)。
中綴=>后綴
5) 迷宮問題
6) 線性鏈表的遞歸算法 一個鏈表=一個結(jié)點+一個鏈表
int fuction(NODE *p) {
if(p==NULL) return 0;
else return(function(p->next));
}
樹與二叉樹
一、 知識點:
1. 樹的定義: data_struct(D,R);
其中:D中有一個根,把D和出度去掉,可以分成M個部分.
D1,D2,D3,D4,D5…DM
R1,R2,R3,R4,R5…RM
而子樹Ri形成樹.
1) 遞歸定義 高度
2) 結(jié)點個數(shù)=1 |
此樹的高度為2 |
2.二叉樹定義:
結(jié)點個數(shù)>=0 .
3. 術(shù)語:左右孩子,雙親,子樹,度,高度等概念.
4. 二叉樹的性質(zhì)
●層次為I的二叉樹 I層結(jié)點 2I 個
●高度為H的二叉樹結(jié)點 2H+1-1個
●H(點)=E(邊)+1
●個數(shù)為N的完全二叉樹高度為|_LOG2n_|
●完全二叉樹結(jié)點編號:從上到下,從左到右.
i結(jié)點的雙親: | |_i/2_| | |_i-1/2_| | 1 | ||||||
i結(jié)點的左孩子: | 2i | 2i+1 | 2 | 3 | |||||
i結(jié)點的右孩子: | 2i+1 | 2i+2 | 4 | 5 | 6 | 7 | |||
(根) | 1為起點 | 0為起點 |
二叉樹的存儲結(jié)構(gòu):
1) 擴展成為完全二叉樹,以一維數(shù)組存儲。
A | |||||||||
B | C | ||||||||
D | E | F | |||||||
G | H | I |
數(shù)組下標(biāo) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
元素 | A | B | C | D | E | F | G | H | I |
2) 雙親表示法
數(shù)組下標(biāo) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
元素 | A | B | C | D | E | F | G | H | I |
雙親 | -1 | 0 | 0 | 1 | 2 | 2 | 3 | 3 | 4 |
3) 雙親孩子表示法
數(shù)組下標(biāo) | 0 | 1 | 2 | 3 | 4 | 5 | … |
元素 | A | B | C | D | E | F | … |
雙親 | -1 | 0 | 0 | 1 | 2 | 2 | … |
左子 | 1 | 3 | 4 | … | |||
右子 | 2 | -1 | 5 | … |
結(jié)構(gòu):
typedef struct {
datatype data;
int parent;
int lchild;
int rchild;
}NODE;
NODE tree[N]; // 生成N個結(jié)點的樹
4) 二叉鏈表
5) 三叉鏈表
6) 哈夫曼樹
5.二叉樹的遍歷
先根 \
中根 棧 中根遍歷(左子樹)根(右子樹),再用相同的方法處理左子樹,右子樹.
后根 /
先,中序已知求樹:先序找根,中序找確定左右子樹.
層次遍歷(隊列實現(xiàn))
6.線索二叉樹(穿線樹)
中序線索二樹樹目的:利用空指針直接得到中序遍歷的結(jié)果.
手段(方法):左指針為空,指向前趨,右指針為空,指向后繼.
結(jié)點結(jié)構(gòu):
ltag | Lch | Data | rch | rtag |
Ltag=0,lch指向左孩子,ltag=1,指向前趨結(jié)點
Rtag=0,rch指向右孩子;rtag=1,指向后繼結(jié)點
中序遍歷: 1) 找最左結(jié)點(其左指針為空)
2) 當(dāng)該結(jié)點的rtag=1,該結(jié)點的rch指向的就為后繼
3) 當(dāng)rtag=0,后繼元素為右子樹中最左邊那個
N個結(jié)點的二樹有空指針N+1個
上一頁 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一頁
轉(zhuǎn)帖于:軟件水平考試_考試吧- 推薦給朋友
- 收藏此頁
·網(wǎng)絡(luò)工程師資料:網(wǎng)絡(luò)體系結(jié)構(gòu)-軟考網(wǎng)絡(luò)類題解 (2008-4-25 14:33:38)
·計算機網(wǎng)絡(luò)基礎(chǔ)網(wǎng)絡(luò)拓撲結(jié)構(gòu)及優(yōu)缺點分析 (2008-2-22 14:04:32)
·網(wǎng)絡(luò)工程師必知:靜態(tài)路由協(xié)議配置方法 (2008-2-22 14:03:39)
·計算機網(wǎng)絡(luò)尼奎斯特 香農(nóng)公式例題解析 (2008-2-22 14:02:35)
·軟考復(fù)習(xí):因特網(wǎng)IP的分類、尋址規(guī)則及子網(wǎng)掩碼 (2008-2-22 13:57:21)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。