學習資料結構和演算法的日常demo雙向鍊錶
**實現:
// 定義node
class
doublenode
@override
public string tostring()
';}}
// 定義雙向鍊錶
class
mydoublelinkedlist
public
void
sethead
(doublenode head)
}
對雙向鍊錶的增刪改遍歷**實現:
// 新增,尾插法
public
void
add(doublenode node)
// 當退出迴圈時,temp就是鍊錶末尾的節點
temp.next = node;
//將要插入的節點進行尾插
node.pre = temp;
//形成雙向鍊錶
}// 有序新增,正序
public
void
addbyorder
(doublenode node)
if(temp.next.id > node.id && temp.id < node.id)
temp = temp.next;
// 沒有找到位置,next}if
(temp.next != null)
else
}// 修改乙個節點
public
void
update
(doublenode newnode)
// 根據傳入的id找到要修改的node
doublenode temp = head.next;
boolean flag =
false
;// 判斷是否找到的標誌
while
(temp != null)
temp = temp.next;}if
(flag)
else
}// 刪除某個節點
public
void
delete
(doublenode node)
doublenode temp = head.next;
boolean flag =
false
;// 判斷是否找到的標誌
while
(temp != null)
temp = temp.next;}if
(flag)
}else
}// 遍歷鍊錶
public
void
print()
doublenode temp = head.next;
// 只要節點不為空
while
(temp != null)
system.out.
println()
;}
測試結果:
資料結構和演算法 雙向鍊錶
初始化 指標域置為空 null 資料域可用可不用 前插法 插入節點插在頭節點之後 為前插法 插入節點的next 頭節點的next 插入節點的prev 頭節點 頭節點的next 插入節點 判斷是否存在下乙個節點 如果 頭節點的next null 說明存在,就需要把下乙個節點的prev指向插入節點 如果...
20201016資料結構和演算法之 雙向鍊錶
雙向鍊錶的結構如下 typedef struct dblinklistdblinklist,dblinknode 雙向鍊錶的特性 由結構可以看出,雙向鍊錶繼承了單向鍊錶的特性同時,其構成相對於單向鍊錶,多了乙個指向前乙個元素的pre指標,具有了逆向追溯性。函式呼叫介面 其結構函式初始化 尾部插入 查...
資料結構之雙向鍊錶
簡述 指標域有乙個指標 而言,占用資源更大,但相應的 雙向鍊錶遍歷的時候只需要乙個指標就可以,而且 只有得到其中任何乙個節點就是得到整個鍊錶,單向鍊錶必須得到他的頭節點,才能遍歷整個鍊錶,而且得有兩個指標。實現 bothwaylinklist.h ifndef mymodule h define m...