數(shù)據(jù)存儲有幾種
-
線性
-
連續(xù)存儲 【數(shù)組】
-
優(yōu)點(diǎn):
存取速度很快记某。 -
缺點(diǎn):
事先需要知道數(shù)組的長度。
插入刪除元素的效率極低烘豌。
空間通常是有限制的载庭。
需要大塊連續(xù)的內(nèi)存塊看彼。
-
-
離散存儲 【鏈表】
-
優(yōu)點(diǎn):
空間沒有限制廊佩。
插入刪除元素速度很快。 -
缺點(diǎn):
存取速度很慢靖榕。
-
-
線性結(jié)構(gòu)的應(yīng)用 【棻瓿】
-
定義:
-
分類:
- 靜態(tài)棧茁计×匣剩【以數(shù)組為內(nèi)核的棧, 就是靜態(tài)棧, 靜態(tài)棧里面各個(gè)元素的物理內(nèi)存地址是連續(xù)的】
- 動(dòng)態(tài)棧⌒茄梗【相應(yīng)地, 以鏈表為內(nèi)核的棧就是動(dòng)態(tài)棧, 棧里面的元素是用尾部指針來聯(lián)系的】
-
算法:
- 出棧践剂。
- 壓棧。
-
應(yīng)用:
- 函數(shù)調(diào)用娜膘。
-
-
線性結(jié)構(gòu)的應(yīng)用【隊(duì)列】
-
定義:
-
分類:
- 鏈?zhǔn)疥?duì)列】⑻埃【鏈表實(shí)現(xiàn)】
- 靜態(tài)隊(duì)列军洼」Γ【數(shù)組實(shí)現(xiàn)】
靜態(tài)隊(duì)列通常都必須是循環(huán)隊(duì)列。
-
-
循環(huán)隊(duì)列的講解:
1. 靜態(tài)隊(duì)列為什么必須是循環(huán)隊(duì)列匕争。
2. 循環(huán)隊(duì)列需要幾個(gè)參數(shù)來確定避乏。【兩個(gè)參數(shù):front(頭) rear(尾)】
3. 循環(huán)對列各個(gè)參數(shù)的含義甘桑∨钠ぃ【兩個(gè)參數(shù)不同場合有不同含義】
(1)隊(duì)列初始化:
front和rear的值都是零。
(2)隊(duì)列非空:
front代表隊(duì)列的第一個(gè)元素跑杭。
rear代表隊(duì)列的最后一個(gè)有效元素的下一個(gè)結(jié)點(diǎn)春缕。
(3)隊(duì)列為空:
front和rear的值相等,但不一定為零艘蹋。
4. 循環(huán)隊(duì)列入隊(duì)偽算法講解锄贼。
入棧偽算法:
入棧的時(shí)候,尾部需要加一位女阀。直接 rear + 1 這樣的寫法是錯(cuò)誤的宅荤,正確的寫法應(yīng)該是 rear = (rear + 1) % 數(shù)組的長度。
5. 循環(huán)隊(duì)列出隊(duì)為算法講解浸策。
出棧的偽算法:
出棧的時(shí)候冯键,是從頭部先出,所以front 會(huì)移到下一個(gè)位置庸汗。寫法類似于入棧惫确。直接 front + 1 是錯(cuò)誤的,正確的寫法應(yīng)該是: front = (front + 1) % 數(shù)組的長度蚯舱。
6. 如何判斷循環(huán)隊(duì)列是否為空改化。
如果 front 與 rear的值相等,則循環(huán)對列 為空枉昏。
7. 如何判斷循環(huán)隊(duì)列是否已滿陈肛。
兩種方式:
1.多增加一種表標(biāo)識參數(shù)。
2. 少用一種元素兄裂,判斷front 和 rear 是否相鄰【通常使用這種方式】句旱。偽算法表示:if((rear + 1) % 數(shù)組長度 == front)
{
已滿。
}
大話數(shù)據(jù)結(jié)構(gòu)里面在講循環(huán)隊(duì)列的時(shí)候的圖示還是 順序存儲的圖晰奖,個(gè)人感覺還是郝斌老師的圖比較形象谈撒,直接以圓形的方式來演示。