1. 程式人生 > 其它 >資料結構>>鏈式儲存結構習題

資料結構>>鏈式儲存結構習題

鏈式儲存結構習題

【2-1-1】帶頭結點的單鏈表L為空的判定條件是( )。

A.L==NULL B.L->next==NULL C.L->next==L D.L!=NULL

【2-1-2】對於一個具有n個元素的線性表,建立其單鏈表的時間複雜度為( )。

A.O(log2n) B.O(1) C.O(n^2) D.O(n)

【2-1-3】在單鏈表中查詢指定值的結點的時間複雜度是( )。

A.O(log2n) B.O(1) C.O(n^2) D.O(n)

【2-1-4】以下關於單鏈表的敘述中,不正確的是( )。

A.結點除自身資訊外還包括指標域,因此儲存密度小於順序儲存結構

B.邏輯上相鄰的元素物理上不必相鄰

C.可以通過頭結點直接計算第i個結點的儲存地址

D.插入、刪除運算操作方便,不必移動結點

【2-1-5】在單鏈表中,增加一個頭結點的目的是為了( )。

A.使單鏈表至少有一個結點

B.標識連結串列中重要結點的位置

C.方便運算的實現

D.說明單鏈表是線性表的鏈式儲存結構

2-1-6在一個具有n個結點的有序單鏈表中插入一個新結點並仍然保持有序的時間複雜度是( )。

A.O(1) B.O(n) C.O(n^2) D.O(nlog2n)

2-1-7將長度為n的單鏈錶鏈接在長度為m的單鏈表之後的演算法的時間複雜度是( )。

A.O(1) B.O(n) C.O(m) D.O(m+n)

2-1-8

已知一個長度為n的單鏈表中所有結點是遞增有序的,以下敘述中正確的是( )。

A.插入一個結點使之有序的演算法的時間複雜度為O(1)

B.刪除最大值結點使之有序的演算法的時間複雜度為O(1)

C.找最小值結點的演算法的時間複雜度為O(1)

D.以上都不對

  1. 【2-2】下面演算法的功能是:刪除單鏈表L中第一個值為x的結點。請在空白處填入正確的語句。
  2. int delx(LinkList &L, ElemType x)
  3. {
  4. LinkList pre = L, ______①______; //pre 指向p 的前驅結點
  5. while(p != NULL && p->data != x) {
  6. ______②_______;
  7. p = p->next; //pre、 p 同步後移一個結點
  8. }
  9. if(p != NULL) { //找到值為 x的p結點
  10. _________③________;
  11. _________④_________;
  12. return 1;
  13. }
  14. else
  15. return 0; //未找到值為 x 的結點

17.}

p=pre->next

pre=p

pre->next=p->next

free(p)

  1. 【2-3】下面演算法的功能是:刪除單鏈表L含兩個或兩個以上的資料結點中第一個值為x的結點的前驅結點。請在空白處填入正確的語句。
  2. int delfirstx(LinkList &L, ElemType x)
  3. {
  4. LinkList prepre = L, pre = prepre->next, p;
  5. if(_______①________)
  6. return 0;
  7. p = _______②________;
  8. while(p != NULL && ________③______) { // 找到值為x結點
  9. ________④_______;
  10. pre = p;
  11. p = p->next; //prepre、 pre、 p 同步後移一個結點
  12. }
  13. if(p != NULL) { // 找到值為 x的p 結點
  14. prepre->next = p; //刪除pre 結點
  15. _______⑤________; //釋放pre 結點空間
  16. return 1; //成功刪除返回 1
  17. }
  18. else
  19. return 0; //未找到值為 x 的結點, 返回 0
  20. }

pre->data==x

pre->next

p->data!=x

prepre=pre

free(pre)

  1. 【2-4】下面演算法的功能是:判定單鏈表L是否是遞增的。請在空白處填入正確的語句。
  2. int increase(LinkList L)
  3. {
  4. LinkList ______①_____, p; //pre 指向第一個資料結點
  5. p = pre->next; //p 指向pre 結點的後繼結點
  6. while (______②_____) {
  7. if (p->data >= pre->data) { //若正序則繼續判斷下一個結點
  8. ______③______; //pre、 p 同步後移
  9. _______④________;
  10. }
  11. else
  12. ________⑤_________;
  13. }
  14. return 1;
  15. }

pre=L->next

p!=NULL

p=p->next

pre=pre->next

return 0

#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=

本文來自部落格園,作者:凡是過去,皆為序曲,轉載請註明原文連結:https://www.cnblogs.com/longhai3/p/15887664.html

如有疑問,歡迎提問

#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=