數據結構試題庫(ku),含(han)答案
時間:2018-08-21 來源:未知
學(xue)習IT技術最多的就是(shi)練習題了,讓(rang)理論與實踐相(xiang)結(jie)合,這樣(yang)學(xue)習才是(shi)有效的,下面是(shi)華清的美女學(xue)霸,在一(yi)次(ci)次(ci)測試中,總結(jie)的常見(jian)的數據結(jie)構題,都是(shi)比(bi)較常見(jian)的哦(e),可以收藏來學(xue)習。
1. 選擇題(ti)(共二十(shi)題(ti),1~10題(ti)每題(ti)2分, 11~20題(ti)每題(ti)3分)
1. 數(shu)據結構通常研究數(shu)據的( )及運算。
A. 物理結構(gou)(gou)和(he)邏輯結構(gou)(gou) B. 存儲和(he)抽象(xiang) C. 理想(xiang)和(he)抽象(xiang) D. 理想(xiang)與邏輯
2. 數據(ju)結構中,在邏輯(ji)上(shang)可以把(ba)數據(ju)結構分(fen)成( )。
A. 動態(tai)結構(gou)和靜態(tai)結構(gou)B. 緊湊(cou)(cou)結構(gou)和非緊湊(cou)(cou)結構(gou)
D. 內部(bu)結(jie)構和外部(bu)結(jie)構
C. 線性結構(gou)和非線性結構(gou)
3. 若f(n)=3n2+2n+1, 則(ze)f(n)= ()。
B. O(n)C. O(2n)D. O(3n2)
A. O(n2)
4. 用單鏈表存儲(chu)的線性(xing)表,存儲(chu)的每個節點(dian)需要兩(liang)個域,一個是數據域,另一個是(
)。
A. 當前(qian)節(jie)點的所(suo)在(zai)地址B. 后(hou)繼節(jie)點的所(suo)在(zai)地址
C. 空指針域(yu)D. 空閑域(yu)
5. 設(she)線性鏈表中節點的(de)結構為(data, next),已(yi)知指(zhi)針q所指(zhi)節點是指(zhi)針節點p的(de)直接(jie)前驅(qu),若在*q與*p之間插(cha)入(ru)節點*s,則應執(zhi)行(xing)()操作(zuo)。
A. s->next=p->next;p->next=s;
B. q->next=s; s->next=p;
C. p->next=s->next;s->next=p;
6. 設線性鏈表中的(de)節點(dian)的(de)結構為(data, next),已知指針p所指的(de)節點(dian)不是尾節點(dian),若在*p之后插(cha)入節點(dian)*s,則應(ying)該執行(xing)()操作。
A. s->next=p; p->next=s;
B. s->next=p->next;p->next=s;
C. s->next=p->next;p=s;
7. 設線性鏈表中(zhong)的(de)(de)節(jie)點(dian)的(de)(de)結構(gou)為(wei)(data, next),若想刪除節(jie)點(dian)p的(de)(de)直接后繼,則應該執(zhi)行()操作。
A. p->next=p->next->next;
B. p=p->next; p->next=p->next->next; C. p->next=p->next;
D. p=p->next->next;
8. p指向線(xian)性鏈表中的某一節點(dian),則在(zai)線(xian)性鏈表的表尾插入節點(dian)s的語句序列是()。
A. while(p->next!=NULL) p=p->next;p->next=s;s->next=NULL;
B. while(p!=NULL) p=p->next;p->next=s;s->next=NULL;
C. while(p->next!=NULL) p=p->next;s->next=p;p->next=NULL;
D. while(p!=NULL) p=p->next->next;p->next=s;s->next=p->next;
9. 一(yi)個棧(zhan)的(de)入棧(zhan)序列為a,b,c,d,e,則出棧(zhan)序列不(bu)可能的(de)是()。
10. 如果以(yi)鏈(lian)表作為棧(zhan)的存儲結構,則出棧(zhan)操作時()。
11. 如果以(yi)鏈表作為棧的存(cun)儲結構,則入棧操作時(shi)()。
12. 在隊列(lie)中存(cun)取數據的原則(ze)是()
A. 先(xian)(xian)進先(xian)(xian)出(chu) B. 后進先(xian)(xian)出(chu) C. 先(xian)(xian)進后出(chu) D. 隨意進出(chu)
13. 棧和隊列的(de)共(gong)同點是()
14. 判斷一(yi)個隊列sp為空的(de)條件是()。
A. sp->front==sp->rear B. sp->front==sp->rear+1 C. sp->front==sp->rear-1 D. sp->front==NULL
15. 將(jiang)含100個節(jie)點(dian)的(de)完(wan)全二叉樹從(cong)根這一層開(kai)始,每層上從(cong)左到右依(yi)次(ci)對節(jie)點(dian)編(bian)(bian)號(hao),根節(jie)點(dian)的(de)編(bian)(bian)號(hao)為1.編(bian)(bian)號(hao)為49的(de)節(jie)點(dian)x的(de)右孩子編(bian)(bian)號(hao)為()。
16. 先訪(fang)問(wen)節點的(de)左子樹,然后訪(fang)問(wen)該節點,最后訪(fang)問(wen)節點的(de)右子樹,這種遍歷稱(cheng)為(
)。
A. 中序(xu)遍歷(li)(li) B. 后序(xu)遍歷(li)(li) C. 先序(xu)遍歷(li)(li) D. 層次遍歷(li)(li)
17. 一個具有767個節點的完(wan)全二(er)叉樹,其葉(xie)子節點個數為()。
18. 深度為(wei) k 的完全二叉(cha)樹中(zhong),最(zui)少有(you)多少個結點()
A 2k-1-1B 2k-1C 2k-1+1D 2k-1
19. 對于二叉樹的(de)遍歷算法,下面(mian)描述正確的(de)是()
A void pre_order(bitree* root){//先(xian)序(xu) printf("%d ",root->data);
pre_order(root->lchild);
pre_order(root->rchild);}
B void in_order(bitree* root){//中序 in_order(root->lchild);
in_order(root->rchild);
printf("%d ",root->data);}
C void post_order(bitree* root){//后序 post_order(root->lchild);
printf("%d ",root->data);
post_order(root->rchild);}
D void in_order(bitree* root){//中(zhong)序 printf("%d ",root->data);
in_order(root->lchild);
in_order(root->rchild);}
20. 設指針變量 p 指向單鏈表中(zhong)節點 A,若刪(shan)除單鏈表中(zhong)的節點 A,則需要修改指針的操作順(shun)序為 ( )
A q= p->next; p->data = q->data;p->next = q ->next;free(q);
B q = p->next ;q->data = p->data;p->next = q->next;free(q);
C q = p->next;p->next = q->next;free(q);
D q = p->next;p->data = q->data;free(q);
2. 簡(jian)答題(共3題,21題10分(fen),22~23題各20分(fen),編程(cheng)題可忽略頭文件)
21. 代碼實現一個單(dan)鏈表的(de)建立,頭(tou)(tou)部(bu)(bu)插(cha)入(ru),頭(tou)(tou)部(bu)(bu)刪除。
22. 代碼(ma)實現一棵12個(ge)節點的(de)完全二叉樹
(1)遞歸實現(xian)節點的創建初(chu)始化(hua)。
(2)遞(di)歸方法實現樹的后序遍歷。
(3)用順序隊列方法實現層次遍歷。
23. 代碼實現順序循環隊列的(de)創建,入隊,出隊,測長(chang),判空(kong),判滿,打印功能。

