資料結構:線性表-例題

SXWisON發表於2024-07-21
  1. 順序儲存結構和鏈式儲存結構都可以進行順序存取。[T/F]

順序儲存結構可以進行順序存取和隨機存取;
鏈式儲存結構只可以進行順序存取。

  1. 雜湊儲存結構能反應資料之間的邏輯關係。[T/F]

雜湊儲存透過雜湊函式對映到物理空間,不能反應資料之間的邏輯關係。

  1. 鏈式儲存設計時,結點內的儲存單元地址不一定連續。[T/F]

鏈式儲存設計師,各個不同結點的儲存空間可以不連續,但結點內的儲存單元地址必須連續

4.在一個設有頭指標和尾指標的單連結串列中,刪除表尾元素的時間複雜度與表長無關 [T/F]

必須從頭開始找到表尾結點的前驅,其時間與表長有關

5.設線性表有n個元素,刪除所有值為x的元素在單連結串列上實現要比順序表上實現效率更高[T/F]

該操作在單連結串列和順序表上實現的時間複雜度都為\(O(n)\),但後者要移動很多元素,因此單連結串列上效率更高。

  1. 給定有n個元素的一維陣列,建立一個有序單連結串列的最低時間複雜度是?

方法一:先建立連結串列,再依次拆元素建立有序表,則每插入一個元素就需要遍歷連結串列尋找插入位置,時間複雜度為\(O(n^2)\)
方法二:先將陣列拍好序,再構建連結串列。陣列排序的最好時間複雜度是\(O(nlogn)\),構建連結串列的時間複雜度是\(O(n)\),故該方法的時間複雜度為\(O(nlogn)\)
故最低時間複雜度是\(O(nlogn)\)

  1. 對於帶頭結點和不帶頭結點的單連結串列,判空條件分別為?

帶頭結點:head->next==NULL
不帶頭結點:head==NULL

  1. 為了方便插入和刪除資料,可以使用雙連結串列存放資料 [T/F]

採用雙連結串列能很方便地方問前驅和後繼。

  1. 設有兩個長度為n的迴圈單連結串列,若要求兩個迴圈單連結串列的頭尾相接的時間複雜度為O(1),則對應兩個尋環單連結串列各設定一個指標,分別指向()

無論哪種相接方式,迴圈單連結串列相接過程中,都需要知道兩個連結串列各自的頭結點和尾結點。又因為要求時間複雜度為O(1),所以兩個指標都應指向尾結點

  1. 已知頭指標h指向一個帶頭結點的非空單迴圈連結串列,結點結構為[data|next],其中next是指向直接後繼結點的指標,p是尾指標,q是臨時指標。現要刪除該連結串列的第一個元素,正確的語句序列是?
    A. h->next=h->next->next; q=h->next; free(q)
    B. q=h->next; h->next=h->next->next; free(q)
    C. q=h->next; h->next=q->next; if(p!=q) p=h; free(q);
    D. q=h->next; h->next=q->next; if(p==q) p=h; free(q);

正確答案為D。注意到迴圈雙連結串列的尾結點在表空時為頭結點,否則為最後一個結點。因此對於只有一個結點的迴圈雙連結串列,刪除結點操作需要特殊處理。選項C沒有針對該情形做處理。

相關文章