【正文】
D. “21AB” S=”software” ,其子串的數(shù)目是 C 。 A. 8 B. 37 C. 36 D. 9 A[1:100,1:100]的三對角矩陣,按行優(yōu)先存入一維數(shù)組 B[1:298]中, A 中元素A66,65(即該元素的下標 )在 B 數(shù)組中位置 k 為 B 。 A. 198 B. 195 C. 197 D. 196 h 的二叉樹只有度為 0 和 2 的結(jié)點,則此類二叉樹的結(jié)點數(shù)至少為 B ,至多為 F 。高為 h 的完全二叉樹的結(jié)點數(shù)至少為 E ,至多為 F 。 A. 2h B. 2h1 C. 2h+1 +1 E. 2h1 F. 2h1 G. 2h+11 H. 2h+1 124 個葉結(jié)點的完全二叉樹,最多有 B 個結(jié)點。 A. 247 B. 248 C. 249 D. 251 ,則該二叉樹是 C 。 A. 滿二叉樹 B. 哈夫曼樹 C. 堆 D. 二叉查找樹 F ;前序遍歷和后序遍歷結(jié)果相同的二叉樹為 B 。 A. 一般二叉樹 B. 只有根結(jié)點的二叉樹 C. 根結(jié)點無左孩子的二叉樹 D. 根結(jié)點無右孩子的二叉樹 E. 所有結(jié)點只有左孩子的二叉樹 F. 所有結(jié)點只有右孩子的 二叉樹 n 個結(jié)點的完全二叉樹,已經(jīng)順序存儲在一維數(shù)組 A[1..n]中,下面的算法是將 A中順序存儲變?yōu)槎骀湵泶鎯Φ耐耆鏄?。請?zhí)顚戇m當語句在下面的空格內(nèi),完成上述算法。 define MAXSIZE 30 typedef struct btnode{ int data。 struct btnode *lchild, *rchild。 }BTN。 void createtree(BTN *p,int A[], int I,int n){ (1) 。 pdata=A[I]。 if( (2) ) (3) 。 else plchild=NULL。 if( (4) ) createtree( (5) )。 else prchild=NULL。 } void btree(BTN * p ,int A[],int n){ createtree(p,A,1,n)。 } 參考答案: (1) p=(BTN *)malloc(sizeof(BTN)) (2) 2*I=n (3) createtree(plchild,A,2*I,n) (4) 2*I+1=n (5) prchild,A,2*I+1,n ,該線性表應該 C 。 A. 元素按值有序 B. 采用順序存儲結(jié)構(gòu) C. 元素按值有序,且采用順序存儲結(jié)構(gòu) D. 元素按值有序,且采用鏈式存儲結(jié)構(gòu) ,對 256 個元素的線性表分成 16 塊最好,每塊的最佳長度是 16 ;若每塊的長度為 8,其平均檢索長度 為 21 。 K 個關鍵字互為同義詞,若用線性探測法把這 K 個關鍵字存入散列表中,至少要進行 D 次探測。 A. K1 次 B. K 次 C. K+1 次 D. K(K+1)/2 次 n 個記錄的有序順序表中進行折半查找,最大的比較次數(shù)是 ? ? 1log2 ?n 。 技術廣泛應用于查找過程,選擇 Hash 函數(shù)的標準是 和 。處理沖突的技術有優(yōu)有劣,其共同標準是 。 ,所需輔助存儲空間最多的是 B ,所需輔助存儲空間最小的是 C ,平均速度最快的是 A 。 B. 歸并排序 C. 堆排序 ,最佳內(nèi)部排序的方法是 A 。 A. 直接插入排序 B. 冒泡排序 C. 簡單選擇排序 O(n2),比 A 的性能差。 A. 堆排序 B. 冒泡排序 C. 簡單選擇排序 O(nlogn)的時間內(nèi)完成對數(shù)組的排序,且要求排序是穩(wěn)定的,則可選擇的排序方法是 C 。 A. 快速排序 B. 堆排序 C. 歸并排序 D. 希爾排序 1000 個元素組成的序列中第 5 個最小元素之前的部分排序的序列,用 B 方法最快。 A. 冒泡排序 B. 快速排序 C. 希爾排序 D. 堆排序 E. 簡單選擇排序 A 。 A. 100,90,80,60,85,75,20,25,10,70,65,50 B. 100,70,50,20,90,75,60,25,10,85,65,80 ,且要求排序是穩(wěn)定的,則應選 C 。 A. 快速排序 B. 堆排序 C. 歸并排序 D. 希爾排序 ,然后將其放在已排序序列的合適位置,該排序方法稱為 A 排序 法。 A. 插入排序 B. 交換排序 C. 選擇排序 D. 歸并排序 B 。 A. O(logn) B. O(n) C. O(nlogn) D. O(n2) ,請將空白部分填上: 將任意序列調(diào)整為最大堆通過不斷調(diào)用 adjust 函數(shù),即 for(i=n/2。i0。i) adjust(list, i, n)。 其中 list 為待調(diào)整序列所在數(shù)組(從下標 1 開始), n 為序列元素的個數(shù)。 void adjust(int list[], int root, int n){ /*將以 root 為下標的對應元素作為待調(diào)整堆的根,待調(diào)整元素放在 list 數(shù)組中,最大元素下標為 n*/ int child,rootkey。 rootkey = (1) 。 child = 2*root。 while(child n){ if((childn) amp。amp。 (list[child]list[child+1])) (2) 。 if(rootkey list[child]) break。 else{ list[ (3) ]=list[child]。 (4) 。 } } list[ (5) ]=rootkey。 } 參考答案: (1) list[root] (2) child++。 (3) child/2 (4) child *= 2。 (5) child/2 ,鏈表是一種 (1) 。隊列和棧都是線性 表,棧的操作特性是 (2) ,隊列的操作特性是 (3) 。今有一空棧 S,對下列待進棧的數(shù)據(jù)元素序列 a,b,c,d,e,f 依次進棧、進棧、出棧、進棧、進棧、出棧的操作,則此操作完成后,棧 S 的棧頂元素為 (4) ,棧底元素為 (5) 。 供選答案: (1): A. 非順序存儲線性表 B. 非順序存儲非線性表 C. 順序存儲線性表 D. 順序存儲非線性表 (2): A. 隨機進出 B. 先進后出 C. 先進 先出 D. 出優(yōu)于進 (3): A. 隨機進出 B. 先進后出 C. 后進后出 D. 進優(yōu)于出 (4): A. f B. c C. a D. b (5): A. b B. c C. a D. d 答案: ABCBC (1) 進行管理,以方便用戶、提高計算機使用效率的一種系統(tǒng)軟件。它的主要功能有:處理機管理、存儲管理、文件管理、 (2) 管理和 設備管理等。 Windows 和 Unix 是最常用的兩類操作系統(tǒng)。前者是一個具有圖形界面的窗口式的 (3) 系統(tǒng)軟件,后者是一個基本上采用 (4) 語言編制而成的的系統(tǒng)軟件。在 (5) 操作系統(tǒng)控制下,計算機能及時處理由過程控制反饋的信息并作出響應。 供選答案: (1): A. 應用軟件 B. 系統(tǒng)軟硬件 C. 資源 D. 設備 (2): A. 數(shù)據(jù) B. 作業(yè) C. 中斷 D. I/O (3): A. 分時 B. 多任務 C. 多用戶 D. 實時 (4): A. PASCAL B. 宏 C. 匯編 D. C (5): A. 網(wǎng)絡 B. 分時 C. 批處理 D. 實時 答案: CBBDD ,并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。 程序一邊讀入整數(shù),一邊構(gòu)造一個從大到小順序鏈接的鏈表,直至不能從鍵盤讀入整數(shù),然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個整數(shù),就調(diào)用函數(shù) insert(),函數(shù) insert()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。 為了插入方便,鏈表在表首有一個輔助表元。 閱讀下列 C 代碼,在 (n) 處填入相應的字句以完成上述功能。 include include define NULL 0 typedef struct node{ int val。 struct node *next。 }NODE。 void insert(NODE *list,int x){ NODE *u, *v, *p。 u = list。 v = unext。 while( (1) amp。amp。 x vval){ /*尋找插入位置 */ u=v。v=unext。 } if((v==NULL || (2) ){ /*判斷是否要插入表元 */ p = (NODE *)malloc(sizeof(NODE))。 pval = x。 /*生成新表元 */ (3) = v。 (4) = p。 /*插入新表元 */ } } main(){ int x。 NODE *head, *p。 /*首先建立只有輔助表元的空鏈表 */ head = (NODE *)malloc(sizeof(NODE))。 (5) =NULL。 printf(“ Enter Integers:\n” )。 while(scanf(“ %d” ,amp。x) == 1) /*反復讀入整數(shù)插入鏈表 */ insert(head,x)。 for(p=headnext。p!=NULL。p=pnext) /*輸出鏈表 */ printf(“ %d\t” ,pval)。 printf(“ \n” )。 } 答案: (1) v != NULL 或 v (2) x vval 或 x != vval (3) pnext (4) unext (5) headnext ,可以訪問的最小數(shù)據(jù)信息單位是 (1) ,可以引用的最小命名數(shù)據(jù)單位是 (2) 。 線性表是最簡單的一種數(shù)據(jù)結(jié)構(gòu),有順序和鏈接兩 種存儲方式。線性表按鏈接方式存儲時,每個結(jié)點的包括 (3) 兩部分。 線性表的查找有 (4) 和 (5) 兩種,但 (5) 只能用于順序存儲的情況。 供選答案: (1): A. 數(shù)字 B. 字符 C. 數(shù)據(jù)元素 D. 數(shù)據(jù)項 (2): A. 結(jié)點 B. 記錄 C. 數(shù)據(jù)元素 D. 數(shù)據(jù)項 (3): A. 數(shù)據(jù)值與符號 B. 數(shù)據(jù)與指針 C. 數(shù)據(jù)與表名 D. 頭地 址與尾地址 (4): A. 隨機查找 B. 順序查找 C. 二分法查找 D. 瀏覽 (5): A. 隨機查找 B. 順序查找 C. 二分法查找 D. 瀏覽 答案: C