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