迴圈鍊錶解決的是如何從當前的乙個結點出發,訪問到鍊錶的全部結點。
在單鏈表中,有了頭結點,可以用o(1)的時間訪問第乙個結點,但對於最後乙個結點訪問需要o(n)時間,就是相當於將單鏈表全部掃瞄一遍。對於迴圈列表不用頭指標,而是用指向終端結點的尾指標來表示迴圈鍊錶,也就是最後乙個結點就是尾指標作為返回,這樣訪問頭結點就是rear->next,訪問終端結點就是rear。
#include#include#includeusing namespace std;
#define true 1
#define false 0
typedef int status;
typedef int elemtype;
typedef struct node
node;
typedef struct node *circularlinklist;
//尾插法建立迴圈鍊錶,迴圈鍊錶的尾指標是最後乙個結點,最後返回的是尾指標
void createlisttail(circularlinklist *l,int n)
*l=rear;
}status mergelinklist(circularlinklist *la,circularlinklist *lb)
int main()
return 0;
}
線性表 迴圈鍊錶
迴圈鍊錶的定義 將單鏈表中最後乙個資料元素的next指標指向第乙個元素,即把鍊錶的兩頭連線,形成了乙個環狀鍊錶,稱為迴圈鍊錶 在迴圈鍊錶中可以定義乙個 當前 指標,稱為游標,通過游標來遍歷鍊錶中所有元素 迴圈鍊錶和動態鍊錶相比,唯一的不同就是迴圈鍊錶首尾相連,其他都完全一樣 可以用兩次列印迴圈鍊錶,...
迴圈鍊錶 線性表(5 15)
練習 建立乙個n個節點環形鍊錶 不包含頭節點 然後輸出這個環形鍊錶 例如 linknode create loop linklist int n int printf loop linklist linknode p 如下 include include typedef int datatype t...
線性表 雙向迴圈鍊錶
雙向鍊錶 double liked list 就是在單向鍊錶的每個結點中,新增乙個指向前驅結點的指標域。class doublenode 雙向鍊錶迴圈帶頭結點的空鍊錶,如圖 非空的迴圈帶頭結點的雙向鍊錶,如圖 插入操作不複雜,不過順序很重要,不要寫反了。假設儲存元素 e 的結點為 s,要實現將結點 ...