單向循環鏈表操作

循環鏈表的好處:
1、任何節點都可以做爲頭節點。 可以從任何節點開始進行鏈表的遍歷。只要當第一個節點被重複訪問時,則意味着遍歷結束。

2、用於實現隊列數據結構是很有幫組的。 如果使用循環鏈表,則不需要爲了隊列而維護兩個指針(front以及rear)。只需要維護尾節點一個指針即可,因爲尾節點的後向節點就是front了。

3、循環鏈表常用於各應用程序中。 例如,當一臺PC運行多個應用程序時,操作系統通常會把這些程序存入至一個鏈表,並進行循環遍歷,給每個應用程序分配一定的時間來執行。此時循環鏈表對於OS是很有幫組的,當達到鏈表尾部時,可以方便的從頭部重新開始遍歷。

4、 循環雙向鏈表可以用於實現高級數據結構,例如斐波那契堆(Fibonacci Heap)。

一、單向循環鏈表的創建
創建步驟基本上和單向鏈表一樣,只是在結尾需要做一件事:讓鏈表的尾結點的指針成員指向頭結點。

//create loop link list
Node *create_loop_list(int n)
{
        int a, i;
    Node *head, *pioneer, *previous;
    head = (Node *)malloc(sizeof(Node));
    head->data = 0;
    head->next = NULL;
    pioneer = head;
    previous = head;

    for(i = 0; i < n; i++){
        scanf("%d", &a);
        // 1:malloc space for the new Node and let the pioneer point to it
        pioneer = (Node *)malloc(sizeof(Node));
        // 2:initiate the new Node
        pioneer->data = a;
        pioneer->next = NULL;
        // 3:use the previous to link the previous to the new Node
        previous->next = pioneer;
        // 4:update the previous
        previous = pioneer;
    }
    pioneer->next = head;
    return head;
}

操作內容,下回分解…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章