學習IT技術最多的就是練習題了,讓理論與實踐相結合,這樣學習才是有效的,下面是華清的美女學霸,在一次次測試中,總結的常見的數(shù)據(jù)結構題,都是比較常見的哦,可以收藏來學習。
1. 選擇題(共二十題,1~10題每題2分, 11~20題每題3分)
1. 數(shù)據(jù)結構通常研究數(shù)據(jù)的( )及運算。
A. 物理結構和邏輯結構 B. 存儲和抽象 C. 理想和抽象 D. 理想與邏輯
2. 數(shù)據(jù)結構中,在邏輯上可以把數(shù)據(jù)結構分成( )。
A. 動態(tài)結構和靜態(tài)結構B. 緊湊結構和非緊湊結構
D. 內部結構和外部結構
C. 線性結構和非線性結構
3. 若f(n)=3n2+2n+1, 則f(n)= ()。
B. O(n)C. O(2n)D. O(3n2)
A. O(n2)
4. 用單鏈表存儲的線性表,存儲的每個節(jié)點需要兩個域,一個是數(shù)據(jù)域,另一個是(
)。
A. 當前節(jié)點的所在地址B. 后繼節(jié)點的所在地址
C. 空指針域D. 空閑域
5. 設線性鏈表中節(jié)點的結構為(data, next),已知指針q所指節(jié)點是指針節(jié)點p的直接前驅,若在*q與*p之間插入節(jié)點*s,則應執(zhí)行()操作。
A. s->next=p->next;p->next=s;
B. q->next=s; s->next=p;
C. p->next=s->next;s->next=p;
6. 設線性鏈表中的節(jié)點的結構為(data, next),已知指針p所指的節(jié)點不是尾節(jié)點,若在*p之后插入節(jié)點*s,則應該執(zhí)行()操作。
A. s->next=p; p->next=s;
B. s->next=p->next;p->next=s;
C. s->next=p->next;p=s;
7. 設線性鏈表中的節(jié)點的結構為(data, next),若想刪除節(jié)點p的直接后繼,則應該執(zhí)行()操作。
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指向線性鏈表中的某一節(jié)點,則在線性鏈表的表尾插入節(jié)點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. 一個棧的入棧序列為a,b,c,d,e,則出棧序列不可能的是()。
10. 如果以鏈表作為棧的存儲結構,則出棧操作時()。
11. 如果以鏈表作為棧的存儲結構,則入棧操作時()。
12. 在隊列中存取數(shù)據(jù)的原則是()
A. 先進先出 B. 后進先出 C. 先進后出 D. 隨意進出
13. 棧和隊列的共同點是()
14. 判斷一個隊列sp為空的條件是()。
A. sp->front==sp->rear B. sp->front==sp->rear+1 C. sp->front==sp->rear-1 D. sp->front==NULL
15. 將含100個節(jié)點的完全二叉樹從根這一層開始,每層上從左到右依次對節(jié)點編號,根節(jié)點的編號為1.編號為49的節(jié)點x的右孩子編號為()。
16. 先訪問節(jié)點的左子樹,然后訪問該節(jié)點,最后訪問節(jié)點的右子樹,這種遍歷稱為(
)。
A. 中序遍歷 B. 后序遍歷 C. 先序遍歷 D. 層次遍歷
17. 一個具有767個節(jié)點的完全二叉樹,其葉子節(jié)點個數(shù)為()。
18. 深度為 k 的完全二叉樹中,最少有多少個結點()
A 2k-1-1B 2k-1C 2k-1+1D 2k-1
19. 對于二叉樹的遍歷算法,下面描述正確的是()
A void pre_order(bitree* root){//先序 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){//中序 printf("%d ",root->data);
in_order(root->lchild);
in_order(root->rchild);}
20. 設指針變量 p 指向單鏈表中節(jié)點 A,若刪除單鏈表中的節(jié)點 A,則需要修改指針的操作順序為 ( )
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. 簡答題(共3題,21題10分,22~23題各20分,編程題可忽略頭文件)
21. 代碼實現(xiàn)一個單鏈表的建立,頭部插入,頭部刪除。
22. 代碼實現(xiàn)一棵12個節(jié)點的完全二叉樹
(1)遞歸實現(xiàn)節(jié)點的創(chuàng)建初始化。
(2)遞歸方法實現(xiàn)樹的后序遍歷。
(3)用順序隊列方法實現(xiàn)層次遍歷。
23. 代碼實現(xiàn)順序循環(huán)隊列的創(chuàng)建,入隊,出隊,測長,判空,判滿,打印功能。