單向鍊錶的缺點
雙向鍊錶設計思路:
**實現:
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...