鏈表的c語言實現(六)

來源:互聯網
上載者:User

一、迴圈鏈表
迴圈鏈表是與單鏈表一樣,是一種鏈式的儲存結構,所不同的是,迴圈鏈表的最後一個結點的指標是指向該迴圈鏈表的第一個結點或者表頭結點,從而構成一個環形的鏈。
迴圈鏈表的運算與單鏈表的運算基本一致。所不同的有以下幾點:
1、在建立一個迴圈鏈表時,必須使其最後一個結點的指標指向表頭結點,而不是象單鏈表那樣置為NULL。此種情況還使用於在最後一個結點後插入一個新的結點。
2、在判斷是否到表尾時,是判斷該結點鏈域的值是否是表頭結點,當鏈域值等於表頭指標時,說明已到表尾。而非象單鏈表那樣判斷鏈域值是否為NULL。

二、雙向鏈表
雙向鏈表其實是單鏈表的改進。
當我們對單鏈表進行操作時,有時你要對某個結點的直接前驅進行操作時,又必須從表頭開始尋找。這是由單鏈表結點的結構所限制的。因為單鏈表每個結點只有一個儲存直接後繼結點地址的鏈域,那麼能不能定義一個既有儲存直接後繼結點地址的鏈域,又有儲存直接前驅結點地址的鏈域的這樣一個雙鏈域結點結構呢?這就是雙向鏈表。
在雙向鏈表中,結點除含有資料域外,還有兩個鏈域,一個儲存直接後繼結點地址,一般稱之為右鏈域;一個儲存直接前驅結點地址,一般稱之為左鏈域。在c語言中雙向鏈表結點類型可以定義為:
typedef struct node
{
int data; /*資料域*/
struct node *llink,*rlink; /*鏈域,*llink是左鏈域指標,*rlink是右鏈域指標*/
}JD;
當然,也可以把一個雙向鏈表構建成一個雙向迴圈鏈表。
雙向鏈表與單向鏈表一樣,也有三種基本運算:尋找、插入和刪除。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.