資料結構和演算法 5 之雙向鍊錶

2021-10-02 19:27:19 字數 1914 閱讀 8277

學習資料結構和演算法的日常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...