資料結構 迴圈鍊錶

2021-09-29 07:43:42 字數 2279 閱讀 8856

// 迴圈鍊錶

// 迴圈鍊錶的最大的特點是尾結點的指標域指向第乙個結點

// 優點是能夠通過任意結點遍歷整個鍊錶結構

#include#includeusing namespace std;

// 1、定義資料元素

struct elementtype

;elementtype dataarray = ,,,

,};// 2、定義迴圈鍊錶結點

struct circularnode

;// 3、定義鍊錶結構

struct circularlinklist

;// 4、在迴圈鍊錶的指定位置插入元素,定義插入函式

// 第一種情況:鍊錶的長度為0

// 第二種情況:鍊錶的長度不為0

void insertcircularlinklist(circularlinklist* clist, int pos, elementtype element);

// 5、列印迴圈鍊錶

void printcircularlinklist(circularlinklist* clist);

// 6、 初始化迴圈列表

void initcircularlinklist(circularlinklist* clist, elementtype* dataarray, int length);

// 7、刪除並返回迴圈鍊錶中指定位置的元素

elementtype deletecircularlinklist(circularlinklist* clist, int pos);

// 8、根據元素內容返回對應的結點指標

circularnode* getcircularlinklistnode(circularlinklist* clist, elementtype element);

// 9、通過給定的某個結點,迴圈遍歷出煉表中的每個元素

void printcircularlinklistbynode(circularlinklist* clist, circularnode* node);

void test()

int main()

void insertcircularlinklist(circularlinklist* clist, int pos, elementtype element)

lastnode->next = node;

} clist->next = node;

clist->length++;

return;

} else

if (currnode)}}

}void printcircularlinklist(circularlinklist* clist)

circularnode* node = clist->next;

for (int i = 0; i < clist->length; i++) }

void initcircularlinklist(circularlinklist* clist, elementtype* dataarray, int length)

}elementtype deletecircularlinklist(circularlinklist* clist, int pos)

clist->next = node->next;

lastnode->next = clist->next;

delete(node);

clist->length--;

} return element;

} circularnode* prenode = null;

circularnode* node = clist->next;

for (int i = 1; node && i < pos; i++)

if (node)

return element;

}circularnode* getcircularlinklistnode(circularlinklist* clist, elementtype element)

while (node != clist->next);

return null;

}void printcircularlinklistbynode(circularlinklist* clist, circularnode* node)

// 記錄下初始的結點指標

circularnode *orignode = node;

do while (node != orignode);

}

資料結構 迴圈鍊錶

近期我在學習資料結構,於是我自己整理了單鏈表 迴圈單鏈表 雙向鍊錶 雙向迴圈鍊錶的相關 以鞏固這段時間的學習,也希望能夠幫助初學者,希望大家在閱讀以下 時發現問題糾正於我,一起 cyclinklist.h ifndef cyclinklist h define cyclinklist h inclu...

資料結構 迴圈鍊錶

迴圈鍊錶的結點 typedef struct circularnodecircularnode 迴圈鍊錶結構 typedef struct circularlinklistcircularlinklist 在迴圈鍊錶的指定位置插入元素 void insertcircularlinklist circ...

資料結構 迴圈鍊錶

start reading 在知道熟悉單鏈表的操作後,我們知道鍊錶有乙個資料域存放具體的資料,有乙個next域存放後繼的位址,如果我們將尾結點的next域指向之前的任意乙個節點,那麼就形成了乙個環。下面我們就來說說迴圈鍊錶 如圖就是乙個迴圈鍊錶 在對迴圈鍊錶進行操作時要注意尾結點的後繼不是null,...