C 雙向迴圈資料鏈表實現

2021-08-20 13:26:31 字數 1415 閱讀 2289

最近在做乙個大專案。哈哈。。。就是開發乙個讓使用者自由搭建場景的軟體。最近一周都在解決畫面的問題。今天已經都給解決了。我們在實現畫面的過程中,需要獲取到閉合區間所有頂點以及沿著某一方向的順序儲存。這時候,選擇雙向迴圈鏈式資料表儲存資料再好不過了。下面就是鏈式資料表的**:

首先我們建立每乙個節點:

//環形雙向鍊錶

public class node//每個節點的資料

public nodenextnode //下一節點

public nodeprenode //上一節點

public node(t val, nodepre, nodenext)

public node(t data)

}

然後我們就開始建立乙個屬於我們的鏈式資料表。

//環形雙向鍊錶

public class circlelink

set}

public circlelink()

//獲取鍊錶大小

public int count()

return count + 1;

}//獲取索引處值

public t getelem(int i)

while(kgetnode(t data)

nodep = head;

while(p.data.equals(data)==false)

p = p.nextnode;

}return p;

}public nodegetnode(int index)

nodep = head;

int k = 0;

if (index > count() || index < 0)

while (k < index)

return p;

}//移除指定位置索引

public void removeelem(int i)

//移除指定位置索引

public void removenode(nodep)

}//增加乙個新的元素

public void addelem(t data)

nodep = head;

while(p.nextnode!=head)

nodenewnode = new node(data);

p.nextnode = newnode;

newnode.prenode = p;

newnode.nextnode = head;

head.prenode = newnode;

}//刪除鍊錶內所有

public void clear()

}

如果我們需要每個節點儲存多個資料,我們就可以自己宣告乙個結構體來當作節點資料的泛型型別。

希望本部落格對你有幫助!

雙向迴圈鏈表示例

相對於單鏈表多了乙個指標prev指向全面的節點 include include typedef struct student linklist linklist create int n return head 正向列印節點的值 intprintlist linklist list return c...

C 雙向迴圈鍊錶(簡稱 雙鏈表)

一 概念 llink 指向前驅結點 前驅指標或者左鏈指標 rlink 指向後繼結點 後驅指標或者右鏈指標 2.雙鏈表常採用帶附加頭結點的迴圈鍊錶方式 first 頭指標,不存放資料,或者存放特殊要求的資料。它的llink指向雙鏈表的尾結點 最後乙個結點 它的rlink指向雙鏈表的首結點 第乙個有效結...

C 實現雙向迴圈鍊錶

雙向迴圈鍊錶 除錯正常,所有功能均測試 節點類 template class listnode listnode type d,listnode n nullptr,listnode p nullptr data d next n prev p void setdata type d 雙向迴圈鍊錶 ...