資料結構 迴圈鍊錶

2021-09-03 08:14:48 字數 2582 閱讀 6357

/** 迴圈鍊錶的結點 */

typedef struct circularnodecircularnode;

/** 迴圈鍊錶結構 */

typedef struct circularlinklistcircularlinklist;

/** 在迴圈鍊錶的指定位置插入元素 */

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

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

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

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

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

elementtype deletecircularlinklist(circularlinklist * cllist, int pos);

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

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

void printcircularlinklist(circularlinklist * cllist);

#endif // circularlinklist_h_included

#include "circularlinklist.h"

/** 在迴圈鍊錶的指定位置插入元素 */

void insertcircularlinklist(circularlinklist * cllist, int pos, elementtype element)else

lastnode->next = node;

}cllist->next = node;

cllist->length++;

return;

}//插入的不是第乙個結點

circularnode * currnode = cllist->next;

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

if(currnode)

}}void initcircularlinklist(circularlinklist * cllist, elementtype * dataarray, int length)

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

elementtype deletecircularlinklist(circularlinklist * cllist, int pos)

cllist->next = node->next;

lastnode->next = cllist->next;

free(node);

cllist->length--;

}return;

}circularnode * prenode;

circularnode * node = cllist->next;

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

if(node)

return element;

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

circularnode * getcircularlinklistnode(circularlinklist * cllist, elementtype element)

node = node->next;

}while(node != cllist->next);

return null;

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

void printcircularlinklistbynode(circularlinklist * cllist, circularnode * node)

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

circularnode * orignode = node;

dowhile(node != orignode);

}void printcircularlinklist(circularlinklist * cllist)

circularnode * node = cllist->next;

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

}

資料結構 迴圈鍊錶

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

資料結構 迴圈鍊錶

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

資料結構 迴圈鍊錶

目錄 迴圈鍊錶 迴圈鍊錶與單鏈表的區別和聯絡 迴圈鍊錶的訪問順序 迴圈佇列的常用操作 排序 合併合併並保留序列 反轉 判空後續操作待補充 實現 迴圈鍊錶和單鏈表最大區別就是最後乙個節點指向頭節點。遍歷時節點迭代指標 p!頭節點 l就行了。迴圈鍊錶也算是繼承自單鏈表,起到模擬環的效果。解決單鏈表無法首...