資料結構第三章學習小結

2022-08-19 02:18:14 字數 2805 閱讀 9776

1.這一章學習了兩種新的結構,棧和佇列,棧是後進先出的結構,佇列是先進先出的結構,兩種結構的特點決定了兩種結構使用的場景。下面對棧和佇列的一些基本操作進行展示。

(一)棧(分為順序棧和鏈棧,這裡是順序棧的一些基本操作)

1 #include 2 #include 3

using

namespace

std;45

const

int maxsize = 100; //

最大長度

67 typedef struct

8sqstack;

1314

void initstack(sqstack& s) //

將棧初始化

1519

20void push(sqstack& s,char e) //

將元素e入棧

2124

25void pop(sqstack& s, char& e) //

出棧一元素至e

2629

30bool stackempty(sqstack s) //

判斷s是否棧空

3136

else

3740}41

42bool stackfull(sqstack s) //

判斷s是否棧滿

4348

else

4952 }

棧經常用於括號匹配,表示式求值。

(二)佇列(分為順序隊和鏈隊,這裡是鏈隊的一些基本操作)

1 typedef int

qelemtype;

2 typedef int

status;

3 typedef struct

qnode

4qnode, *queueptr;

89 typedef struct

10linkqueue;

1415 status initqueue(linkqueue&q)

16 21

22 status enqueue(linkqueue&q, qelemtype e)

23 32

33 status dequeue(linkqueue& q,qelemtype &e)

34 44

delete p; //

釋放原隊頭元素的空間

45return1;

46}4748

qelemtype gethead(linkqueue q)

49 54 }

佇列常用於舞伴配對。

2.除了這兩種結構外,我們還學習了遞迴的使用,下面這個是遞迴常見的乙個例子:

題目:若有10級台階,小白每次最多能跨3級,則小白登上這10級台階一共有多少種方法?請給出具體的分析或計算過程。

1

/*思路

2爬10級樓梯可以分為三種情況:34

1)從9級樓梯爬1級56

2)從8級樓梯爬2級78

3)從7級樓梯爬3級910

即 f (10) = f (9) + f (8) + f (7),

1112

由此可以推出 f (n) = f (n-1) + f (n-2) + f (n-3)

1314

當 n = 1時,只有一種走法:(1)

1516

當 n = 2時,共有兩種走法:(1,1)、(2,0)

1718

當 n = 3時,共有三種走法:(1,1,1)、(1,2,0)、(2,1,0)、(3,0,0)

1920

所以,f (4) = f (3) + f (2) + f (1) = 4 + 2 + 1 = 7;

2122

f (5) = f (4) + f (3) + f (2) = 7 + 4 + 2 = 13;

2324

f (6) = f (5) + f (4) + f (3) = 13 + 7 + 4 = 24;

2526

f (7) = f (6) + f (5) + f (4) = 24 + 13 + 7 = 44;

2728

f (8) = f (7) + f (6) + f (5) = 44 + 24 + 13 = 81;

2930

f (9) = f (8) + f (7) + f (6) = 81 + 44 + 24 = 149;

3132

f (10) = f (9) + f (8) + f (7) = 149 + 81 + 44 = 274;

33*/

3435 #include 36

int f(int

n)37

43using

namespace

std;

44int

main ()

45

3.我們進行了一次小組合作打**,開始pta一直顯示執行超時,後來經過思考和修改,找到了錯誤在的地方,在這裡放出來,希望自己和同學下次可以注意

1

int m,temp=0

;2 cin >>m;

3string

snum;

4for(int i=0;i)514

}15 }

這裡題目規定了輸入是公升序的,所以每次查詢時可以從上次查詢的地方往後查,不需要重頭開始,這樣可以省下很多時間。

4.經過幾周的學習,感覺自己現在可以脫離書本打一些**了,並且懂得去思考如何降低時間複雜度。

5.希望以後的**可以少一些錯誤,在打的時候就考慮到時間複雜度和空間複雜度,把已經學了的結構的基本操作記熟。

資料結構第三章學習小結

一 本章內容小結 第三章主要學習了兩種資料結構 棧和佇列,它們是操作受限的線性表。棧只能在棧頂進行插入和刪除,因此先進後出 而佇列則是在隊頭刪除,隊尾插入,先進先出,因此需要根據題目來選取應用哪種資料結構。後面還通過棧來處理遞迴問題,並分析遞迴方法的效率與時間複雜度,最後通過學習三個經典案例 括號匹...

資料結構 第三章學習小結

1.本章內容小結 本章系統學習了佇列 fifo 和棧 lifo 的的各兩種實現方式以及它的一些應用。本章用鏈式儲存結構和順序儲存結構分別實現了佇列和棧,其中佇列的迴圈鍊錶的產生原因以及解決辦法 也就是使用迴圈鍊錶 讓我知道取模運算子 的作用比我想象的大。2.完成作業或實踐的心得 作業或實踐都是跟第三...

資料結構 第三章學習小結

內容小結 第三章學習了兩種特殊的線性表 棧和佇列,其中包括 1.棧和佇列的定義和特點 棧是限定僅在表尾進行插入或刪除操作的線性表,元素後進先出 lifo 而佇列是限定在表頭刪除 表尾插入的線性表,元素先進先出 fifo 2.棧和佇列的兩種儲存結構以及其基本操作 利用迴圈佇列,避免了 假溢位 問題,需...