1.這一章學習了兩種新的結構,棧和佇列,棧是後進先出的結構,佇列是先進先出的結構,兩種結構的特點決定了兩種結構使用的場景。下面對棧和佇列的一些基本操作進行展示。
(一)棧(分為順序棧和鏈棧,這裡是順序棧的一些基本操作)
1 #include 2 #include 3using
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 intqelemtype;
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一直顯示執行超時,後來經過思考和修改,找到了錯誤在的地方,在這裡放出來,希望自己和同學下次可以注意
1int 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.棧和佇列的兩種儲存結構以及其基本操作 利用迴圈佇列,避免了 假溢位 問題,需...