鏈結串列的每個節點通常包含哪些資訊?
-
A. 只有資料0% (0)
-
B. 資料和指向下一個節點的指標63.2% (12)
-
C. 資料和前一個節點的指標0% (0)
-
D. 以上皆是36.8% (7)
解說:
鏈結串列的每個節點通常包含的資訊主要是資料和指向其他節點的指標。根據不同的鏈結串列類型,節點的結構會有所不同:
(1)單向鏈結串列的每個節點通常包含資料和指向下一個節點的指標。
(2)雙向鏈結串列的每個節點包含資料、指向下一個節點的指標,以及指向前一個節點的指標。
因此,根據題目的選項,正確的答案是:
(2)雙向鏈結串列的每個節點包含資料、指向下一個節點的指標,以及指向前一個節點的指標。
因此,根據題目的選項,正確的答案是:
(B) 資料和指向下一個節點的指標。
選項 (D) 以上皆是,並不完全正確,因為「只有資料」和「資料和前一個節點的指標」並不適用於所有類型的鏈結串列。
答對率 : 63.2 %
若要反轉一個單向鏈結串列,以下哪一個算法是正確的?
-
A. 使用遞迴方法直接反轉鏈結31.6% (6)
-
B. 改變所有節點的資料值5.3% (1)
-
C. 按照順序經過所有節點,並重建鏈結57.9% (11)
-
D. 在反轉過程中只保留第一個和最後一個節點的指標5.3% (1)
解說:
要反轉一個單向鏈結串列,正確的算法是:按照順序經過所有節點,並重建鏈結。
這個方法通常是通過iteration來完成的,過程中需要追蹤前一個節點,以便在反轉時能夠將當前節點的指標指向前一個節點。
對於其他選項:
(A) 使用遞迴方法直接反轉鏈結:雖然可以用遞迴反轉鏈結串列,但這個方法不是「直接」反轉,而是需要回溯。
(B) 改變所有節點的資料值:這種方法不會真正反轉鏈結串列的結構,只是修改資料,並不正確。
(D) 在反轉過程中只保留第一個和最後一個節點的指標:這樣做無法有效地反轉鏈結串列的所有節點。
因此,正確答案是 (C)按照順序經過所有節點,並重建鏈結。
(B) 改變所有節點的資料值:這種方法不會真正反轉鏈結串列的結構,只是修改資料,並不正確。
(D) 在反轉過程中只保留第一個和最後一個節點的指標:這樣做無法有效地反轉鏈結串列的所有節點。
因此,正確答案是 (C)按照順序經過所有節點,並重建鏈結。
答對率 : 57.9 %
下列有關以陣列或鏈結串列實作佇列之敘述,何者錯誤?
-
A. 陣列在處理上受其宣告時陣列大小之限制0% (0)
-
B. 鏈結串列在儲存相同元素時所用之空間較小78.9% (15)
-
C. 鏈結串列其佇列之大小較不受限制15.8% (3)
-
D. 鏈結串列需要用到指標5.3% (1)
解說:
在陣列和鏈結串列實作佇列的相關敘述中,正確的分析如下:
(A) 陣列在處理上受其宣告時陣列大小之限制:正確,因為陣列的大小在宣告時必須確定,且無法動態改變。
(B) 鏈結串列在儲存相同元素時所用之空間較小:錯誤,因為鏈結串列需要額外的指標來儲存節點的連結,因此在儲存相同數量的元素時,鏈結串列所需的總空間通常會比陣列大。
(C) 鏈結串列其佇列之大小較不受限制:正確,因為鏈結串列的大小僅受限於可用的記憶體,不會像陣列那樣受限於宣告時的大小。
(D) 鏈結串列需要用到指標:正確,因為鏈結串列的每個節點都需要指標來指向下一個節點。
因此,錯誤的敘述是 (B) 鏈結串列在儲存相同元素時所用之空間較小。
答對率 : 78.9 %
用鏈結串列儲存無次序之資料時,下列敘述何者最為適當?
-
A. 找尋最大資料時要O(n)的時間63.2% (12)
-
B. 做插入動作要O(n)的時間15.8% (3)
-
C. 做刪除動作要O(log n)的時間10.5% (2)
-
D. 找尋某特定資料時要O(log n)的時間10.5% (2)
解說:
在鏈結串列中,資料的儲存是無序的,因此各項操作的時間複雜度可以這樣分析:
(A) 找尋最大資料時要O(n)的時間:正確,因為必須遍歷整個鏈結串列來找到最大值。
(B) 做插入動作要O(n)的時間:不正確,插入操作在鏈結串列中一般可以在O(1)的時間內完成,前提是我們已經有指向插入位置的指標。
(C) 做刪除動作要O(log n)的時間:不正確,刪除操作在鏈結串列中通常需要O(n)的時間,因為需要先找到要刪除的節點。
(D) 找尋某特定資料時要O(log n)的時間:不正確,因為在無序的鏈結串列中,尋找特定資料的時間複雜度是O(n)。
因此,最適當的敘述是 (A) 找尋最大資料時要O(n)的時間。
(A) 找尋最大資料時要O(n)的時間:正確,因為必須遍歷整個鏈結串列來找到最大值。
(B) 做插入動作要O(n)的時間:不正確,插入操作在鏈結串列中一般可以在O(1)的時間內完成,前提是我們已經有指向插入位置的指標。
(C) 做刪除動作要O(log n)的時間:不正確,刪除操作在鏈結串列中通常需要O(n)的時間,因為需要先找到要刪除的節點。
(D) 找尋某特定資料時要O(log n)的時間:不正確,因為在無序的鏈結串列中,尋找特定資料的時間複雜度是O(n)。
因此,最適當的敘述是 (A) 找尋最大資料時要O(n)的時間。
答對率 : 63.2 %
環形鏈結串列的特點是什麼?
-
A. 最後一個節點指向第一個節點73.7% (14)
-
B. 每個節點都有兩個指標15.8% (3)
-
C. 僅能從頭遍歷至尾5.3% (1)
-
D. 只能插入或刪除最後一個節點5.3% (1)
解說:
環形鏈結串列的特點主要是:
(A) 最後一個節點指向第一個節點:正確。這是環形鏈結串列的關鍵特性,最後一個節點的指標指向第一個節點,使得整個鏈結串列形成一個環。
對於其他選項:
(B) 每個節點都有兩個指標:錯誤。這是雙向鏈結串列的特徵,而不是環形鏈結串列的特徵。環形鏈結串列的每個節點通常只有一個指向下一個節點的指標。
(C) 僅能從頭遍歷至尾:錯誤。在環形鏈結串列中,由於結構是環狀的,可以從任意一個節點開始遍歷,並能夠回到起始點。
(D) 只能插入或刪除最後一個節點:錯誤。在環形鏈結串列中,可以在任何位置插入或刪除節點,而不僅僅是最後一個節點。
因此,正確答案是 (A) 最後一個節點指向第一個節點。
(C) 僅能從頭遍歷至尾:錯誤。在環形鏈結串列中,由於結構是環狀的,可以從任意一個節點開始遍歷,並能夠回到起始點。
(D) 只能插入或刪除最後一個節點:錯誤。在環形鏈結串列中,可以在任何位置插入或刪除節點,而不僅僅是最後一個節點。
因此,正確答案是 (A) 最後一個節點指向第一個節點。
答對率 : 73.7 %