天天看點

循環連結清單

循環連結清單即是一種首尾相接的連結清單

(1)帶頭結點的單循環連結清單示意圖:

循環連結清單

注:判斷空連結清單的條件是:head = head->next

(2)僅設定尾指指針的但循環連結清單

循環連結清單

注:判斷空連結清單的條件是:rear = rear->next

倆個單連結清單合并成一個循環連結清單:

在連結清單上實作将兩個線性表(a1,a2,…,an)和(b1,b2,…,bm)連接配接成一個線性表(a1,…,an,b1,…bm)

分析:若在單連結清單或頭指針表示的單循環表上做這種連結操作,都需要周遊第一個連結清單,找到結點an,然後将結點b1鍊到an的後面,其執行時間是o(n)。若在尾指針表示的單循環連結清單上實作,則隻需修改指針,無須周遊,其執行時間是o(1)。

循環連結清單

linklist connect(linklist a,linklist b)  

{  

    //a b均為非空循環連結清單的尾指針  

    linklist p = a->next;//儲存a表的頭節點位置  

    a->next = b->next->next;//b表的開始節點連接配接到a表尾  

    free(b->next);  

    b->next = p; //完成循環連接配接  

    return b;  

}  

注意:

 ①循環連結清單中沒有null指針。涉及周遊操作時,其終止條件就不再是像非循環連結清單那樣判别p或p->next是否為空,而是判别它們是否等于某一指定指針,如頭指針或尾指針等。

 ②在單連結清單中,從一已知結點出發,隻能通路到該結點及其後續結點,無法找到該結點之前的其它結點。而在單循環連結清單中,從任一結點出發都可通路到表中所有結點,這一優點使某些運算在單循環連結清單上易于實作。

轉載:http://blog.csdn.net/xsf50717/article/details/39932479

繼續閱讀