/** 迴圈鍊錶的結點 */
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就行了。迴圈鍊錶也算是繼承自單鏈表,起到模擬環的效果。解決單鏈表無法首...