数据结构课上笔记7
介紹棧和隊(duì)列基本概念和用法。
?
設(shè)輸入序列1、2、3、4,則下述序列中( )不可能是出棧序列。【中科院中國(guó)科技大學(xué)2005】
A. 1、2、3、4 ? ? ? ? ? ? ? ? ? ? ?B. 4、 3、2、1
C. 1、3、4、2 ? ? ? ? ? ? ? ? ? ? ?D.4、1、2、3
選D
我是一個(gè)個(gè)模擬來(lái)做的。
?
描述棧的基本型性質(zhì):
1、集合性:棧是由若干個(gè)元素集合而成,沒(méi)有元素(空集)成為空棧。
2、線性:除棧頂和棧底之外,任意元素均有唯一前趨和后繼。
3、運(yùn)算受限:只在一端插入刪除的線性表即為棧
?
順序存儲(chǔ)和順序存取:順序存取是只能逐個(gè)存或取結(jié)構(gòu)中的元素,例如棧。順序存儲(chǔ)是利用一個(gè)連續(xù)的空間相繼存放,例如棧可基于一維數(shù)組存放元素。
?
一個(gè)較早入棧的元素能否在后面元素之前出棧?如果后面元素壓在它上面,就不可以了。如果后面元素未壓入,它可以彈出。在其他元素前面。
?
?
棧與遞歸:
? 當(dāng)在一個(gè)函數(shù)的運(yùn)行期間調(diào)用另一個(gè)函數(shù)時(shí),在運(yùn)行 該被調(diào)用函數(shù)之前,需先完成三件事: ?將實(shí)參等傳遞給被調(diào)用函數(shù),保存返回地址(入棧); ?為被調(diào)用函數(shù)的局部變量分配存儲(chǔ)區(qū); ? ?將控制轉(zhuǎn)移到被調(diào)用函數(shù)的入口。 ?
從被調(diào)用函數(shù)返回調(diào)用函數(shù)之前,應(yīng)該完成: ?保存被調(diào)函數(shù)的計(jì)算結(jié)果; ?釋放被調(diào)函數(shù)的數(shù)據(jù)區(qū); ?按被調(diào)函數(shù)保存的返回地址(出棧)將控制轉(zhuǎn)移到調(diào) ? ? ? ?用函數(shù)。
多個(gè)函數(shù)嵌套調(diào)用的規(guī)則是:后調(diào)用先返回。
?此時(shí)的內(nèi)存管理實(shí)行“棧式管理”
?
隊(duì)列:
? ? ? ? 在多用戶計(jì)算機(jī)系統(tǒng)中,各個(gè)用戶需要使用 CPU 運(yùn)行自己的程序,它們分別向操作系統(tǒng)提出使用 CPU 的請(qǐng)求,操作系統(tǒng)按照每個(gè)請(qǐng)求在時(shí)間上的先后順序, 將其排成一個(gè)隊(duì)列,每次把CPU分配給隊(duì)頭用戶使用, 當(dāng)相應(yīng)的程序運(yùn)行結(jié)束,則令其出隊(duì),再把CPU分配 給新的隊(duì)頭用戶,直到所有用戶任務(wù)處理完畢。
?
以主機(jī)和打印機(jī)為例來(lái)說(shuō)明,主機(jī)輸出數(shù)據(jù)給打印 機(jī)打印,主機(jī)輸出數(shù)據(jù)的速度比打印機(jī)打印的速度要快 得多,若直接把輸出的數(shù)據(jù)送給打印機(jī)打印,由于速度 不匹配,顯然不行。解決的方法是設(shè)置一個(gè)打印數(shù)據(jù)緩 沖區(qū),主機(jī)把要打印的數(shù)據(jù)依此寫(xiě)到這個(gè)緩沖區(qū)中,寫(xiě) 滿后就暫停輸出,繼而去做其它的事情,打印機(jī)就從緩 沖區(qū)中按照先進(jìn)先出的原則依次取出數(shù)據(jù)并打印,打印 完后再向主機(jī)發(fā)出請(qǐng)求,主機(jī)接到請(qǐng)求后再向緩沖區(qū)寫(xiě) 入打印數(shù)據(jù),這樣利用隊(duì)列既保證了打印數(shù)據(jù)的正確, 又使主機(jī)提高了效率。
?
雙端隊(duì)列:
某隊(duì)列允許在其兩端進(jìn)行入隊(duì)操作,但僅允許在一端進(jìn)行出隊(duì)操作,若元素a,b,c,d,e依次入隊(duì)列后,再進(jìn)行出隊(duì)操作,則不可能得到的順序是( )。?
A. bacde ? ? ? ? ? ? ? ?B. dbace ? ? ? ? ? ? ?C. dbcae ? ? ? ? ? ? ? ?D. ecbad
解析:出隊(duì)只能一端,所以abcde一定是這個(gè)順序。
反模擬入隊(duì),每次只能在兩邊出元素。
總結(jié)
- 上一篇: 为啥用redis解决会话呢?
- 下一篇: leetcode205. 同构字符串 一