C++連結串列及其建立

2020-07-16 10:04:41
連結串列是由一系列連線在一起的結點構成,其中的每個結點都是一個資料結構。

連結串列的結點通常是動態分配、使用和刪除的,允許連結串列在程式執行時增大或縮小。如果需要將新資訊新增到連結串列中,則程式只需分配另一個結點並將其插入到系列中。如果需要從連結串列中刪除特定的資訊塊,則程式將刪除包含該資訊的結點。

連結串列對陣列和向量的優點

儘管連結串列的編碼和管理比陣列更複雜,但它們有一些明顯的優勢。首先,連結串列可以容易地擴大或縮小。實際上,程式設計師並不需要知道連結串列中有多少個結點。它們只是根據需要在記憶體中建立。

有人可能會爭辯說,連結串列並不優於向量(可在標準模板庫中找到),因為它們也可以擴充套件或縮小。然而,連結串列對於向量的優勢是結點可以插入連結串列或從連結串列中刪除的速度。要將值插入向量的中間,需要將插入點之後的所有元素朝向量的末尾移動一個位置,從而為新值騰出空間。同樣,從向量中刪除一個值需要將刪除點之後的所有元素都朝向量的開始方向移動一個位置。而當一個結點插入連結串列或從連結串列中刪除結點時,其他結點都不必移動。

連結串列的結構

連結串列中的每個結點都包含一個或多個儲存資料的成員。例如,儲存在結點中的資料可以是庫存記錄;或者它可以是由客戶的姓名、地址和電話號碼等組成的客戶資訊記錄。

除了資料之外,每個結點還包含一個後繼指標指向連結串列中的下一個結點。圖 1 給出了單個結點的組成。


圖 1 單個結點的組成