1. 程式人生 > >連結串列學習總結

連結串列學習總結

單鏈表(具體實現在上兩篇部落格)

1、單鏈表就是通過每個結點的指標指向下一個結點從而連線起來的結構,單鏈表示意圖如下:

2、單鏈表的初始化:(建構函式部分)

3、單鏈表插入結點:通過指定的位置pos進行結點的插入(當pos為0的時候,頭插;當pos為連結串列長度減1的時候,為尾插。)

4、單鏈表刪除結點的過程:同結點的插入過程。

單迴圈連結串列

1、單迴圈連結串列與單鏈表有點相似的地方,就是通過結點的next域指向下一個結點,然後這樣連結起來的。但是 惟一的不同就是:單鏈表的最後一個結點的next域指向NULL,而單迴圈連結串列的最後一個結點指向頭結點,下面是單迴圈連結串列的示意圖:

2、單迴圈連結串列的初始化:從上面的示意圖可以知道,單迴圈連結串列的最後一個結點的next域指向頭結點,那麼當只有一個結點的時候就是頭結點,也就是自己指向自己。

3、單迴圈連結串列插入結點:這個時候往連結串列中插入結點,因為連結串列已經是個環,所以直接讓新插入節點的next域指向下一個結點就可以了,就算插入的是最後一個位置,讓它指向下一個結點也符合條件,因為最後一個位置的下一個結點就是頭結點。

4、單迴圈連結串列刪除結點:

雙向連結串列

1、雙向連結串列是指連結串列中包含兩個域(除資料域外),一個next域指向下一個結點,一個prior域指向上一個結點,這樣的連結串列可以通過第一個結點找到最後一個結點,當然也可以通過最後一個結點找到第一個結點,因為它是雙向的。雙向連結串列示意圖:

2、雙向連結串列的初始化:由於連結串列的頭結點不參與運算,所以頭結點的prior域一直指向空。

3、雙向連結串列插入結點:每插入一個結點,都要處理其next域和prior域,新建結點的下一個結點的prior域需要指向這個新建的結點,但是有可能這個新建的結點就已經是最有一個結點了。因此程式當中需要判斷插入的結點是否為最後一個結點。

4、雙向連結串列刪除結點:

雙向迴圈連結串列

1、結合單迴圈連結串列對雙向迴圈連結串列就不難理解,其實就是雙向連結串列構成了一個環,雙向迴圈連結串列示意圖:

2、雙向迴圈連結串列初始化:next域和prior域都指向自身,這是因為prior域要指向上一個結點,next域要指向下一個結點,這個時候就只有一個頭結點,所以都指向自身。

3、雙向迴圈連結串列插入結點:同單迴圈連結串列插入結點類似。

4、雙向迴圈連結串列刪除結點:和單向迴圈連結串列刪除結點類似。