線性表,鏈表
-
鏈表的特點:插入、刪除不需要移動元素;不必事先估計存儲空間;所需空間與線性長度成正比。
-
設h為不帶頭結點的單向鏈表。在h的頭上插入一個新結點t的語句是:
t->next=h; h=t;
-
對於一個具有N個結點的單鏈表,在給定值為x的結點后插入一個新結點的時間復雜度為 : O(N)
-
帶頭結點的單鏈表h為空的判定條件是: h->next == NULL;
-
在單鏈表中,若p所指的結點不是最后結點,在p之后插入s所指結點,則執行 : s->next=p->next; p->next=s;
-
將兩個結點數都為N且都從小到大有序的單向鏈表合並成一個從小到大有序的單向鏈表,那么可能的最少比較次數是: N
-
已知表頭元素為c的單鏈表在內存中的存儲狀態如下表所示:
現將f存放於1014H處,並插入到單鏈表中,若f在邏輯上位於a和e之間,則a、e、f的“鏈接地址”依次是: 1014H, 1004H, 1010H -
對於順序存儲的長度為N的線性表,訪問結點和增加結點的時間復雜度為: O(1), O(N)
-
若某線性表最常用的操作是存取任一指定序號的元素和在最后進行插入和刪除運算,則利用哪種存儲方式最節省時間? 順序表
-
在N個結點的順序表中,算法的時間復雜度為O(1)的操作是:
訪問第i個結點(1≤i≤N)和求第i個結點的直接前驅(2≤i≤N)
-
順序表中第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是 108
-
對於下圖所示的單鏈表,下列表達式值為真的是 P2.getNext()==null
-
數據結構反映了數據元素之間的結構關系。
單鏈表是一種 :非順序存儲線性表 。
-
帶頭結點的單鏈表first為空的判定條件是:first->link== NULL;
-
單鏈表的每個結點中包括一個指針next,它指向該結點的后繼結點。現要將指針q指向的新結點插入到指針p指向的單鏈表結點之后,下面的操作序列正確: q->next =p->next; p->next=q;
-
在單鏈表中,要刪除某一指定結點,必須先找到該結點的 :直接前驅
棧
-
設一個棧的輸入序列是1、2、3、4、5,則下列序列中,是棧的合法輸出序列的是? 3 2 1 5 4
-
令P代表入棧,O代表出棧。則將一個字符串3*a+b/c變為3 a * b c / +的堆棧操作序列是哪個?(例如將ABC變成BCA的操作序列是PPOPOO。) POPPOOPPOPPOOO
-
表達式a*(b+c)-d的后綴表達式是: a b c + * d -
-
設一個堆棧的入棧順序是1、2、3、4、5。若第一個出棧的元素是4,則最后一個出棧的元素必定是: 1或者5
-
利用大小為n的數組(下標從0到n-1)存儲一個棧時,假定棧從數組另一頭開始且top==n表示棧空,則向這個棧插入一個元素時,修改top指針應當執行: top--
-
若top為指向棧頂元素的指針,判定棧S(最多容納m個元素)為空的條件是: S->top == -1
-
從棧頂指針為ST的鏈棧中刪除一個結點且用X保存被刪結點的值,則執行: X= ST->data; ST = ST->next;
-
若棧采用順序存儲方式存儲,現兩棧共享空間V[m]:top[i]代表第i(i=1或2)個棧的棧頂;棧1的底在V[0],棧2的底在V[m-1],則棧滿的條件是: top[1]+1==top[2]
-
對空棧 S 進行 Push 和 Pop 操作,入棧序列為 a, b, c, d, e,經過 Push, Push, Pop, Push, Pop, Push, Push, Pop 操作后,得到的出棧序列是: b, c, e
-
有六個元素以6、5、4、3、2、1的順序進棧,問哪個不是合法的出棧序列? 3 4 6 5 2 1
-
從棧頂指針為ST的鏈棧中刪除一個結點且用X保存被刪結點的值,則執行: X= ST->data; ST = ST->next;
-
棧的基本運算的是: 刪除棧頂元素 ;判斷棧是否為空 ;將棧置為空棧
-
鏈式棧與順序棧相比,一個比較明顯的優點是: 通常不會出現棧滿的情況
隊列
-
若已知一隊列用單向鏈表表示,該單向鏈表的當前狀態(含3個對象)是:1->2->3,其中x->y表示x的下一節點是y。此時,如果將對象4入隊,然后隊列頭的對象出隊,則單向鏈表的狀態是: 2->3->4
-
關於棧和隊列的下列說法正確的是(A)
A. 棧是后進先出的結構,出棧時除了棧頂元素,其余元素無需移動;B. 棧的插入操作是在棧頂進行,插入時需將棧內所有元素后移;
C. 循環隊列的出隊操作刪除的是隊頭元素,采用循環隊列存儲時,其余隊列元素均需要移動;
D. 鏈隊列的入隊操作在表尾進行,操作時間與隊列長度成正比
-
為解決計算機主機與打印機之間速度不匹配問題,通常設置一個打印數據緩沖區,主機將要輸出的數據依次寫入該緩沖區,而打印機則依次從該緩沖區中取出數據。該緩沖區的邏輯結構應該是? 隊列
-
在一個不帶頭結點的非空鏈式隊列中,假設f和r分別為隊頭和隊尾指針,則插入s所指的結點運算是 r->next=s; r=s;
-
若用大小為6的數組來實現循環隊列,且當前front和rear的值分別為0和4。當從隊列中刪除兩個元素,再加入兩個元素后,front和rear的值分別為多少? 2和0
二叉樹
-
先序遍歷圖示二叉樹的結果為 : A,B,D,H,I,E,C,F,G
-
如果二叉樹的前序遍歷結果是12345,后序遍歷結果是24531,那么該二叉樹的中序遍歷結果是什么? 21435
-
若一棵二叉樹的前序遍歷序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍歷序列是{ 1, 2, 3, 4, 5, 6, 7 },則下列哪句是錯的? A
A. 6是3的父結點
B. 這是一棵完全二叉樹
C. 所有的奇數都在葉子結點上
D. 這是一棵二叉搜索樹
-
任何一棵二叉樹的葉結點在先序、中序和后序遍歷序列中的相對次序 : 不發生改變
-
已知一棵普通樹的廣義表表示為a(b, c(e(h, i, j), f), d(g)),則此樹的度為 3
-
具有五層結點的完全二叉樹至少有 16 個結點。
-
一棵二叉樹中,雙分支結點數為15,單分支結點數為30,則葉子結點數為 16 個。 n0 = n2 + 1
-
一棵n個結點的完全二叉樹從根結點這一層開始按從上往下,從左到右的順序把結點依次存儲在數組A[1..n]中。設某個結點在數組中的位置為i, 則若它有右孩子,則右孩子結點的位置是 2i+1 。
-
在高度為h的完全二叉樹中 : 第i (1≤i<h) 層上有2^(i-1)個結點
-
有關樹和二叉樹的敘述 :
樹中的最大度數沒有限制,而二叉樹結點的最大度數為2;
樹的結點無左右之分,而二叉樹的結點有左右之分;
樹和二叉樹均為樹形結構 .
樹的應用
-
將{ 32, 2, 15, 65, 28, 10 }依次插入初始為空的二叉搜索樹。則該樹的前序遍歷結果是: 32, 2, 15, 10, 28, 65
-
將 {28, 15, 42, 18, 22, 5, 40} 逐個按順序插入到初始為空的最小堆(小根堆)中。則該樹的前序遍歷結果為: 5, 18, 28, 22, 15, 42, 40
-
設最小堆(小根堆)的層序遍歷結果為 {8, 38, 25, 58, 52, 82, 70, 60}。用線性時間復雜度的算法將該堆調整為最大堆(大根堆),然后連續執行兩次刪除最大元素操作(DeleteMax)。則該樹的中序遍歷結果為:
8, 58, 52, 60, 25, 38
-
設最大堆(大根堆)的層序遍歷結果為 {98, 72, 86, 60, 65, 12, 23, 50}。用線性時間復雜度的算法將該堆調整為最小堆(小根堆),然后連續執行兩次刪除最小元素操作(DeleteMin)。則該樹的中序遍歷結果為: 98, 60, 65, 50, 86, 72
-
堆的形狀是一棵: 完全二叉樹
-
哪種樹,樹中任何結點到根結點路徑上的各結點值是有序的? 堆
-
設一段文本中包含字符{a, b, c, d, e},其出現頻率相應為{3, 2, 5, 1, 1}。則經過哈夫曼編碼后,文本所占字節數為 : 25
-
由分別帶權為9、2、5、7的四個葉子結點構成一棵哈夫曼樹,該樹的帶權路徑長度為: 44
-
已知字符集{ a, b, c, d, e, f, g, h }。若各字符的哈夫曼編碼依次是 0100, 10, 0000, 0101, 001, 011, 11, 0001,則編碼序列 0100011001001011110101 的譯碼結果是: afeefgd
-
對 n 個互不相同的符號進行哈夫曼編碼。若生成的哈夫曼樹共有 115 個結點,則 n 的值是: 58