1.若一個棧的輸入序列為1,2,3,…,n,輸出序列的第一個元素是i,則第j個輸出元素是_____。
選項ABCD均錯誤,第j個輸出元素應為i-j+1。
棧是一種先進后出的數據結構,也就是說如果入棧順序為123,那么出棧順序則為321。
題目中棧的輸入序列為1,2,3,...,n,該序列是等差為1的遞增序列,那么出棧順序應該為n,n-1...,3,2,1,也就是等差為1的遞減序列。那么當輸出序列的第一個元素為i時,利用等差數列公式an=a1+(n-1)*d可知,第j個元素應為aj=i+(j-1)*(-1)=i-j+1。
2.一個棧的輸入序列為1,2,3,4,5,則下列序列不可能是棧的輸出序列的是?
A.23415 B.54132 C.23145 D.15432
不可能序列是B,因為5最后進棧,此時棧中從棧頂到棧底的5,4,3,2,1,因此不可能出棧為54132
那其他三項為什么可能啊?
A 1進 2進 2出 3進 3出 4進 4出 1出 5進 5出 C 1進 2進 2出 3進 3出 1出 4進 4出 5進 5出 D 1進 1出 2進 3進 4進 5進 5出 4出 3出 2出
3.所謂“循環隊列”是指用單向循環鏈表或者循環數組表示的隊列 f
錯誤,循環隊列指的是后者,用數組表示的隊列,利用求余數運算使得頭尾相接
4.在用數組表示的循環隊列中,front值一定小於等於rear值F
rear后裔
5.從一個棧頂指針為HS的鏈棧中刪除一個結點時,用X保存被刪結點的值,則執行?
HS是一個指針,但是在D中卻把一個數賦值給了HS,HS = HS->data;那HS就不再指向該鏈表了,指向了內存地址為data的地方.程序跑飛了
應該是這樣的啊
x=HS->data;
HS=HS->next;
6.若top為指向棧頂元素的指針,判定棧S(最多容納m個元素)為空的條件是:
順序棧是利用一組地址連續的存儲單元存放自棧底到棧頂的數據元素,同時附設一個指針(top)指示當前棧頂的位置。
通常,當棧存在一個元素時,top等於0,因此通常把空棧的判定條件定為top等於-1。注意:若棧頂top初始化為0,則指向棧頂元素的下一個位置,對此相應的定義操作也會變化。此處top初始化為-1。)
7.若采用帶頭、尾指針的單向鏈表表示一個堆棧,那么該堆棧的棧頂指針top應該如何設置()
a 表尾為top 刪除的時候復雜度太大
8.a+b*c+(d*e+f)*g ----> abc*+de*f+g*+
遇到a:直接輸出:
后綴表達式:a
堆棧:空
遇到+:堆棧:空,所以+入棧
后綴表達式:a
堆棧:+
遇到b: 直接輸出
后綴表達式:ab
堆棧:+
遇到*:堆棧非空,但是+的優先級不高於*,所以*入棧
后綴表達式: ab
堆棧:*+
遇到c:直接輸出
后綴表達式:abc
堆棧:*+
遇到+:堆棧非空,堆棧中的*優先級大於+,輸出並出棧,堆棧中的+優先級等於+,輸出並出棧,然后再將該運算符(+)入棧
后綴表達式:abc*+
堆棧:+
遇到(:直接入棧
后綴表達式:abc*+
堆棧:(+
遇到d:輸出
后綴表達式:abc*+d
堆棧:(+
遇到*:堆棧非空,堆棧中的(優先級小於*,所以不出棧
后綴表達式:abc*+d
堆棧:*(+
遇到e:輸出
后綴表達式:abc*+de
堆棧:*(+
遇到+:由於*的優先級大於+,輸出並出棧,但是(的優先級低於+,所以將*出棧,+入棧
后綴表達式:abc*+de*
堆棧:+(+
遇到f:輸出
后綴表達式:abc*+de*f
堆棧:+(+
遇到):執行出棧並輸出元素,直到彈出左括號,所括號不輸出
后綴表達式:abc*+de*f+
堆棧:+
遇到*:堆棧為空,入棧
后綴表達式: abc*+de*f+
堆棧:*+
遇到g:輸出
后綴表達式:abc*+de*f+g
堆棧:*+
遇到中綴表達式結束:彈出所有的運算符並輸出
后綴表達式:abc*+de*f+g*+
堆棧:空
9.若借助堆棧將中綴表達式a+b*c+(d*e+f)*g轉換為后綴表達式,當讀入f時,堆棧里的內容是什么(按堆棧自底向上順序)
B.+(+
10.如果循環隊列用大小為m的數組表示,隊頭位置為front、隊列元素個數為size,那么隊尾元素位置rear為:
關鍵這是一個循環隊列,r可能小於f,例如n為4時,元素個數有0、1、2、3,r可以為0,f為2,這樣實際上有兩個元素,但是以r-f得出來的是-2。
D答案在r大於f和r小於f時都適用。
11.如果循環隊列用大小為m的數組表示,隊頭位置為front、隊列元素個數為size,那么隊尾元素位置rear為:
(front+size-1)%m
12.若用大小為6的數組來實現循環隊列,且當前front和rear的值分別為0和4。當從隊列中刪除兩個元素,再加入兩個元素后,front和rear的值分別為多少?
A.2和0
13.利用大小為n的數組(下標從0到n-1)存儲一個棧時,假定棧從數組另一頭開始且top==n表示棧空,則向這個棧插入一個元素時,修改top指針應當執行
!!!!!!!
top--
14.某隊列允許在其兩端進行入隊操作,但僅允許在一端進行出隊操作。若元素a、b、c、d、e依次入此隊列后再進行出隊操作,則不可能得到的出隊序列是:
B.d b c a e
————————————————
版權聲明:本文為CSDN博主「HECHENNIU」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/HECHENNIU/article/details/105251937