算法與數(shù)據(jù)結(jié)構(gòu)模擬試題及參考答案
算法與數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)中,最重要的就是多做模擬試題,以下是陽(yáng)光網(wǎng)小編為大家收集到的算法與數(shù)據(jù)結(jié)構(gòu)模擬試題,希望對(duì)大家有幫助!
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題一、單選題
1. 需要分配較大空間,插入和刪除不需要移動(dòng)元素的線性表,其存儲(chǔ)結(jié)構(gòu)是( )。
A. 單鏈表 B. 靜態(tài)鏈表
C. 線性鏈表 D. 順序存儲(chǔ)結(jié)構(gòu)
2. 用單鏈表表示的鏈隊(duì)的對(duì)頭在鏈表的( )位置。
A. 鏈頭 B. 鏈尾
C. 鏈中 D. 任意
3. ( )是C語(yǔ)言中的“abcd321ABCD”的子串( )。
A. abcd B. 321AB
C. “abcABC” D. “21AB”
4. 一個(gè)n*n的對(duì)稱矩陣,如果以行或者列為主序放入內(nèi)存,則容量為(
A. n*n B. n*n/2
C. n*(n+1)/2 D. (n+1)2/2
5. 遞歸函數(shù)f(n)=f(n-1)+n (n>1)遞歸出口是( )。
A. f(1)=0 B. f(1)=1
C. f(0)=1 D. f(n)=n
6. 有如下遞歸過(guò)程:
Void reverse (int m)
﹛
Printf (“%d”,n%10);
If (n/10!=0)
Reverse (n/10);
﹜
調(diào)用語(yǔ)句reverse(582)的結(jié)果是( )。
A. 582 B. 852
C. 258 D. 285
7. 樹(shù)最適合用來(lái)表示( )。
A. 有序數(shù)據(jù)元素 B. 無(wú)序數(shù)據(jù)元素
C. 元素之間具有分支層次關(guān)系的數(shù)據(jù) D. 元素之間無(wú)聯(lián)系的數(shù)據(jù)
8. 順序查找法適合于存儲(chǔ)結(jié)構(gòu)為( )的線性表。
A. 散列存儲(chǔ) B. 順序存儲(chǔ)或鏈?zhǔn)酱鎯?chǔ)
C. 壓縮存儲(chǔ) D. 索引存儲(chǔ)
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題二、多選題
1. 數(shù)據(jù)是信息的載體,它有( )幾種形式。
A. 整數(shù)和實(shí)型數(shù) B. 字符串
C. 圖像和聲音 D. 信息
E. 磁盤文件
2. 在算法分析與數(shù)據(jù)結(jié)構(gòu)中,算法描述方法有( )。
A. 自然語(yǔ)言 B. 框圖
C. 類計(jì)算機(jī)語(yǔ)言 D. 數(shù)據(jù)結(jié)構(gòu)
3. 常用的線性表存貯結(jié)構(gòu)有( )。
A. 順序存貯結(jié)構(gòu) B. 鏈表存貯結(jié)構(gòu) C. 隊(duì)列存貯結(jié)構(gòu) D. 堆棧存貯結(jié)構(gòu) E. 順序存貯與鏈表存貯混合結(jié)構(gòu) 4. 一維數(shù)組元素的類型可以是( )。
A. 簡(jiǎn)單變量,如整數(shù)、浮點(diǎn)數(shù) B. 復(fù)合變量,如結(jié)構(gòu)體、數(shù)組 C. 只有簡(jiǎn)單變量 D. 指針變量 E. 字符串
5. 假設(shè)以鏈表的方式實(shí)現(xiàn)堆棧,top為棧頂指針,指向類型為linkstack類型,下述程序 實(shí)現(xiàn)將堆棧初始化為空棧的操作。程序( )是正確的。
A. void INITSTACK( linkstack *top ) { top = NULL;};
B. void INITSTACK(linkstack * top ) { top = -1;};
C. void INITSTACK(linkstack * top ) { top = 0;};
D. void INITSTACK(linkstack * top ) { top =空;};
6. 下列排序算法中哪些是不穩(wěn)定的?( )
A. 冒泡排序 B. 選擇排序 C. 快速排序 D. 堆排序
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題三、填空題
1. 數(shù)據(jù)結(jié)構(gòu)針對(duì)數(shù)據(jù)對(duì)象,要研究其___________,邏輯結(jié)構(gòu)及其操作。
2. 算法設(shè)計(jì)要求達(dá)到以下目標(biāo):___________、可讀性、健壯性、高效率與低存儲(chǔ)要求。 3. 棧的特點(diǎn)是___________,因此棧又稱為_(kāi)__________表。 4. 隊(duì)列的特點(diǎn)是___________,因此隊(duì)列又稱為_(kāi)__________表。
5. 假定二叉樹(shù)的數(shù)據(jù)域?yàn)閐ata, 左右子樹(shù)的指針域分別是lChild和rChild,指向根結(jié)點(diǎn) 的'指針為t, 完善以下二叉樹(shù)前序遍歷的算法。 Preorder(t) { ___________; ___________; if (t==NULL) return;
Printf(t->data); }
6. 冒泡排序算法在最好情況下,比較次數(shù)是___________。 7. 針對(duì)插入與刪除操作,順序文件效率不高。如果需要在順序文件上實(shí)現(xiàn)插入與刪除操作, 解決問(wèn)題的基本方法是___________。
8. 下面的算法是從數(shù)組a中刪除第i個(gè)元素起的k個(gè)元素。試補(bǔ)充完整程序。 /* ArraySize 指數(shù)據(jù)的尺寸,last是數(shù)據(jù)中已有的元素個(gè)數(shù).*/ Algorithm delK(int a[ArraySize], int i, int k, int last)
If (!(( K >= 0) && (1 <= i +k && i +k <= last )&& ( 0 <= last && last <= arrary)) { /* 判斷參數(shù)合法性 */ Printf(“Error !”); Else
For (count = 1; count <= k; count++) { /* 刪除一個(gè)元素 */
For(j = last; j>= i +1; j--) ___________; Last = last – 1; }}
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題四、判斷題
1. 線性表中的元素只能是簡(jiǎn)單類型。( ) 2. 線性表是數(shù)組。( )
3. 如果入隊(duì)與出隊(duì)的操作順序不同,其輸出元素的順序可以與輸入元素的順序不同。( ) 4. 棧滿是數(shù)據(jù)對(duì)象棧的固有操作。( )
5. 二叉樹(shù)只有前序、中序和后序三種遍歷運(yùn)算。( )
6. 數(shù)據(jù)結(jié)構(gòu)中只研究了二叉樹(shù),對(duì)一般樹(shù)沒(méi)有給出解決問(wèn)題的算法。( )
7. 在單向鏈表中,在X指向的結(jié)點(diǎn)后插入結(jié)點(diǎn),對(duì)應(yīng)的方法與X是否是頭指針無(wú)關(guān)。( ) 8. 分塊查找時(shí)引入了靜態(tài)查找就是順序查找、折半查找和分塊查找。( )
9. 在求最短路徑的Dijkstra算法和Floyd算法中,Dijkstra算法只能求從一點(diǎn)到其他各 點(diǎn)的最短路徑,而Floyd算法可以求圖中兩點(diǎn)之間的最短路徑。( ) 10. 樹(shù)是一種特殊的圖。( )
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題五、簡(jiǎn)答題
1. 對(duì)鏈表設(shè)置頭結(jié)點(diǎn)的作用是什么?(至少說(shuō)出兩條好處) 2. 在hq的鏈隊(duì)中,設(shè)計(jì)一個(gè)算法求該連隊(duì)中結(jié)點(diǎn)的個(gè)數(shù)。 3. 假設(shè)有如下的結(jié)構(gòu)定義: struct node {
char data;
struct node * link; }
* p, *pre;
而且pre指向鏈表中非空元素,寫(xiě)一段程序生成構(gòu)造p結(jié)點(diǎn),并將其鏈入到pre之后。 4. 求1到n的平方和(利用遞歸函數(shù)調(diào)用) 5. 為什么要采用循環(huán)隊(duì)列?
算法與數(shù)據(jù)結(jié)構(gòu)模擬試題參考答案
一、單項(xiàng)選擇題
badcbdcb
二、多項(xiàng)選擇題
1.abc
2.abc
3.abe
4.abd
5.ac
6.bcd
三、填空題
(1)物理結(jié)構(gòu) (2)正確性 (3)先進(jìn)后出,先進(jìn)后出 (4)先進(jìn)先出,先進(jìn)先出 (5)Preorder(t->lChild);
Preorder(t->rChild); (6) n-1 (7)批處理 (8)A[j-1] = a[j]
四、判斷題
ffffffffft
五、簡(jiǎn)答題
1 答:其好處有:
(1)對(duì)帶頭結(jié)點(diǎn)的鏈表,在表的任何接點(diǎn)之前插入結(jié)點(diǎn)或刪除表中的任何結(jié)點(diǎn),所要做的都是修改前一個(gè)結(jié)點(diǎn)的指針域,因?yàn)槿魏卧亟Y(jié)點(diǎn)都有前驅(qū)結(jié)點(diǎn)(若鏈表沒(méi)有頭結(jié)點(diǎn),則首元素結(jié)點(diǎn)沒(méi)有前驅(qū)結(jié)點(diǎn),在其前插入結(jié)點(diǎn)和刪除結(jié)點(diǎn)時(shí)操作復(fù)雜些)。
(2)對(duì)帶頭結(jié)點(diǎn)的鏈表,表頭指針是指向頭結(jié)點(diǎn)的非空指針,因此空表與非空表的處理是一樣的。
2 答:求該鏈隊(duì)中結(jié)點(diǎn)個(gè)數(shù)實(shí)際上是計(jì)算以hq->front為頭指針的單鏈表中的結(jié)點(diǎn)個(gè)數(shù)。算法如下:
Int Qucount (Lqueue *hq) {
SNode *p=hq->front; Int n=0;
While (p!=NULL) {
n++;
P=P->next; }
Return (n); }
3 ch=getchar(); //取一個(gè)數(shù)據(jù)元素// p=(struct node *)malloc(sizeof(struct node));
//申請(qǐng)一個(gè)新結(jié)點(diǎn)// p->data=ch;
p->link = pre->link; pre->link = p; 4 答:
Int sum2(int n) {
If (n==0)return 0; Return sum2(n-1)+n*n; }
【算法與數(shù)據(jù)結(jié)構(gòu)模擬試題及參考答案】相關(guān)文章:
1.算法與數(shù)據(jù)結(jié)構(gòu)模擬試題及答案
2.2017年算法與數(shù)據(jù)結(jié)構(gòu)試題及參考答案
3.算法與數(shù)據(jù)結(jié)構(gòu)試題及答案
4.2017年算法與數(shù)據(jù)結(jié)構(gòu)模擬試題及答案
5.《算法數(shù)據(jù)結(jié)構(gòu)》期末試題及答案