雙向鍊錶的遍歷,新增、修改、刪除的操作思路
(1)先找到雙向鍊錶的最後這個節點
(2)temp.next = new datanode();
(3)newdatanode.pre = temp;
(1)因為是雙向鍊錶,因此,我們可以實現自我刪除某個節點
(2)直接找到要刪除的這個節點,比如temp
(3)temp.pre.next = temp.next;
(4)temp.next.pre = temp.pre;
internal class datanode
public string name
/// /// 指向下乙個節點,預設為null
///
public datanode nextnode
/// /// 指向上乙個節點,預設為null
///
public datanode prenode
internal datanode(int id,string name)
public override string tostring()
],name=";
}}/// /// 雙向鍊錶
///
internal class mydoublelinkedlist
/// /// 遍歷雙向鍊錶
///
public void list()
//因為頭節點,不能動,因此我們需要乙個輔助變數來遍歷
datanode temp = head.nextnode;
while (true)
console.writeline();
} /// /// 新增乙個節點到雙向鍊錶的最後
///
///
public void add(datanode node)
//當推出while迴圈時,temp就指向了鍊錶的最後
//形成乙個雙向鍊錶
temp.nextnode = node;
node.prenode = temp;
} /// /// 修改乙個節點的內容
///
///
public void update(datanode node)
datanode temp = head.nextnode;
bool flag = false;
while (true)
//將temp後移
temp = temp.nextnode;
}if (flag)
else
的節點,不能修改!");
}} /// /// 刪除乙個節點
/// 1.對於雙向鍊錶,我們可以直接找到要刪除的這個節點
/// 2.找到後,自我刪除即可
///
///
public void delete(int id)
datanode temp = head.nextnode;
bool flag = false;
while (true)
temp = temp.nextnode;
}if (flag)
}else
,節點不存在。");}}}
/// /// 根據id號有序新增資料
///
///
public void addorderbyid(datanode node)
//後移
temp = temp.nextnode;
}if (flag)
else
}//呼叫
C 雙向鍊錶
部落格介紹了c語言,以及c 的單向鍊錶。那麼我們今天介紹的雙向鍊錶,顧名思義,就是資料本身具備了左邊和右邊的雙向指標。雙向煉表相比較單向鍊錶,主要有下面幾個特點 1 在資料結構中具有雙向指標 2 插入資料的時候需要考慮前後的方向的操作 3 同樣,刪除資料的是有也需要考慮前後方向的操作 那麼,乙個非迴...
C 雙向鍊錶
includeusing namespace std typedef int datatype class linknode friend class slist private datatype data linknode prev linknode next class slist void p...
C 雙向鍊錶
考慮順序表中總是可以很方便地找到表元素的前驅和後繼,但單鏈表只能找後繼。如要找前驅,必須從表頭開始搜尋。為了克服這一缺點,可採用雙向鍊錶 double linked list 雙向鍊錶經常採用帶頭結點的迴圈鍊錶方式,如下圖所示。檢視動畫演示 圖7.10 帶表頭結點的雙向迴圈鍊錶 假設 指標p指向雙向...