數據結構試題庫,含答案

學習IT技術最多的就是練習題了,讓理論與實踐相結合,這樣學習才是有效的,下面是華清的美女學霸,在一次次測試中,總結的常見的數據結構題,都是比較常見的哦,可以收藏來學習。

數據結構試題庫,含答案

1. 選擇題(共二十題,1~10題每題2分, 11~20題每題3分)

1. 數據結構通常研究數據的( )及運算。

A. 物理結構和邏輯結構 B. 存儲和抽象 C. 理想和抽象 D. 理想與邏輯

2. 數據結構中,在邏輯上可以把數據結構分成( )。

A. 動態結構和靜態結構B. 緊湊結構和非緊湊結構

D. 內部結構和外部結構

C. 線性結構和非線性結構

3. 若f(n)=3n2+2n+1, 則f(n)= ()。

B. O(n)C. O(2n)D. O(3n2)

A. O(n2)

4. 用單鏈表存儲的線性表,存儲的每個節點需要兩個域,一個是數據域,另一個是(

)。

A. 當前節點的所在地址B. 後繼節點的所在地址

C. 空指針域D. 空閒域

5. 設線性鏈表中節點的結構為(data, next),已知指針q所指節點是指針節點p的直接前驅,若在*q與*p之間插入節點*s,則應執行()操作。

A. s->next=p->next;p->next=s;

B. q->next=s; s->next=p;

C. p->next=s->next;s->next=p;

6. 設線性鏈表中的節點的結構為(data, next),已知指針p所指的節點不是尾節點,若在*p之後插入節點*s,則應該執行()操作。

A. s->next=p; p->next=s;

B. s->next=p->next;p->next=s;

C. s->next=p->next;p=s;

7. 設線性鏈表中的節點的結構為(data, next),若想刪除節點p的直接後繼,則應該執行()操作。

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指向線性鏈表中的某一節點,則在線性鏈表的表尾插入節點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. 在隊列中存取數據的原則是()

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個節點的完全二叉樹從根這一層開始,每層上從左到右依次對節點編號,根節點的編號為1.編號為49的節點x的右孩子編號為()。

16. 先訪問節點的左子樹,然後訪問該節點,最後訪問節點的右子樹,這種遍歷稱為(

)。

A. 中序遍歷 B. 後序遍歷 C. 先序遍歷 D. 層次遍歷

17. 一個具有767個節點的完全二叉樹,其葉子節點個數為()。

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 指向單鏈表中節點 A,若刪除單鏈表中的節點 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. 代碼實現一個單鏈表的建立,頭部插入,頭部刪除。

22. 代碼實現一棵12個節點的完全二叉樹

(1)遞歸實現節點的創建初始化。

(2)遞歸方法實現樹的後序遍歷。

(3)用順序隊列方法實現層次遍歷。

23. 代碼實現順序循環隊列的創建,入隊,出隊,測長,判空,判滿,打印功能。私信【IT】查看更多嵌入式、C語言、Java、前端等學習視頻!


分享到:


相關文章: