演算法學習第三日之雙向鍊錶

2022-07-08 00:30:41 字數 1759 閱讀 9399

單向鍊錶的缺點

雙向鍊錶設計思路:

**實現:

package com.atguigu.linkedlist;

public class doublelinkedlistdemo

}// 建立乙個雙向鍊錶的類

class doublelinkedlist

// 遍歷雙向鍊錶的方法

// 顯示鍊錶[遍歷]

public void list()

// 因為頭節點,不能動,因此我們需要乙個輔助變數來遍歷

heronode2 temp = head.next;

while (true)

// 輸出節點的資訊

system.out.println(temp);

// 將temp後移, 一定小心

temp = temp.next;

} }// 新增乙個節點到雙向鍊錶的最後.

public void add(heronode2 heronode)

// 如果沒有找到最後, 將將temp後移

temp = temp.next;

} // 當退出while迴圈時,temp就指向了鍊錶的最後

// 形成乙個雙向鍊錶

temp.next = heronode;

heronode.pre = temp;

} // 修改乙個節點的內容, 可以看到雙向鍊錶的節點內容修改和單向鍊錶一樣

// 只是 節點型別改成 heronode2

public void update(heronode2 newheronode)

// 找到需要修改的節點, 根據no編號

// 定義乙個輔助變數

heronode2 temp = head.next;

boolean flag = false; // 表示是否找到該節點

while (true)

if (temp.no == newheronode.no)

temp = temp.next;

} // 根據flag 判斷是否找到要修改的節點

if (flag) else

} // 從雙向鍊錶中刪除乙個節點,

// 說明

// 1 對於雙向鍊錶,我們可以直接找到要刪除的這個節點

// 2 找到後,自我刪除即可

public void del(int no)

heronode2 temp = head.next; // 輔助變數(指標)

boolean flag = false; // 標誌是否找到待刪除節點的

while (true)

if (temp.no == no)

temp = temp.next; // temp後移,遍歷

} // 判斷flag

if (flag)

} else }}

// 定義heronode2 , 每個heronode 物件就是乙個節點

class heronode2

// 為了顯示方法,我們重新tostring

@override

public string tostring()

}

一日一摸之第三日 Builder模式

使用 builder 模式的目的就在於將構建複雜物件的過程和它的部件解耦,是解耦過程和部件,是為了將部件和組裝過程分開。builder 模式參與者 1 builder 抽象工人 規定產生物件例項的介面2 concretebuilder 從事實際工作的工人 實現builder 介面,實現具體的業務邏輯...

Python基礎教程學習第三日 字串

字串適用於所有標準的序列操作,但是字串是不可變的,因此賦值等操作是不合法的。字串使用百分號 來實現格式化操作。format hello,s.s enough for ya?values world hot print format values hello,world.hot enough for ...

演算法學習之資料結構之雙向鍊錶

雙鏈表的沒乙個元素都是物件,每個物件包含乙個關鍵字域和兩個指標域 next,prev 當然,每個物件還可能包含一些其他的衛星資料。next指向後繼節點,prev指向前驅節點。如果prev x null,則無前驅節點,是head頭節點。如果next x null則無後繼節點,是最後乙個節點,即尾節點t...