一.棧與隊(duì)列
1.棧結(jié)構(gòu)
修改原則:FILO先進(jìn)后出
棧結(jié)構(gòu)
2.隊(duì)列的結(jié)構(gòu)
修改原則:FIFO
(線性結(jié)構(gòu)中的特殊結(jié)構(gòu)),
隊(duì)列結(jié)構(gòu)
//邏輯結(jié)構(gòu):線性結(jié)構(gòu),集合結(jié)構(gòu),樹形結(jié)構(gòu),圖形結(jié)構(gòu)
//物理結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
二.棧的基本實(shí)現(xiàn):
實(shí)現(xiàn)方法1:順序結(jié)構(gòu)實(shí)現(xiàn)
實(shí)現(xiàn)方法2:鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)
(c語言中 目標(biāo)是變量用點(diǎn)語法,如果是指針用->)
2.棧和遞歸
遞歸(直接或間接調(diào)用自己)
使用遞歸的原因:簡(jiǎn)潔,可能影響性能
使用遞歸的三個(gè)情況:
1.定義是遞歸的:數(shù)學(xué)定義(階乘/斐波拉契數(shù)列)
2.數(shù)據(jù)結(jié)構(gòu)是遞歸的:(鏈表)
3.問題是遞歸的:
分治法:
1.大問題拆成小問題,解決方法非常相似
2.簡(jiǎn)化問題
3.需要有遞歸出口,遞歸邊界
遞歸工作棧:
棧空間
執(zhí)行函數(shù)前:(系統(tǒng)操作的事情)
1.傳遞 返回地址 和 參數(shù)
2.局部變量分配空間
3.控制交給被調(diào)用函數(shù)
4.返回時(shí),保存結(jié)果返回,主動(dòng)釋放局部變量,控制權(quán)返回
非要用棧的時(shí)候:圖層,navagationController
二.隊(duì)列
問題:假溢出