public class HeroNodeDemo { public static void main(String[] args) { HeroNode hero1 = new HeroNode(1, "松江"); HeroNode hero2 = new HeroNode(2, "武松"); HeroNode hero3 = new HeroNode(3, "及時(shí)雨"); HeroNode hero4 = new HeroNode(4, "吳用"); HeroNode hero5 = new HeroNode(4, "常毅"); SingledList singledList = new SingledList(); singledList.add(hero1); singledList.add(hero2); singledList.add(hero3); singledList.add(hero4); singledList.delete(3); singledList.show(); } } /** * 創(chuàng)建一個(gè)管理節(jié)點(diǎn)的類 */ class SingledList { /** * 初始化一個(gè)頭節(jié)點(diǎn),頭節(jié)點(diǎn)不能儲(chǔ)有效數(shù)據(jù),因?yàn)轭^節(jié)點(diǎn)可以幫助我們確定節(jié)點(diǎn)的初始位置 * 因此頭節(jié)點(diǎn)不能動(dòng) */ HeroNode head = new HeroNode(0, ""); /** * 定義一個(gè)用于添加節(jié)點(diǎn)的方法 * @param heroNode */ public void add(HeroNode heroNode) { // 因?yàn)轭^節(jié)點(diǎn)不能動(dòng),所以設(shè)置一個(gè)指針節(jié)點(diǎn) HeroNode temp = head; // 使用循環(huán),遍歷到最后一個(gè)節(jié)點(diǎn) while (true) { if (temp.next == null) { break; } temp = temp.next; } temp.next = heroNode; } /** * 定義一個(gè)用于修改節(jié)點(diǎn)的方法,根據(jù)節(jié)點(diǎn)的編號(hào)進(jìn)行修改,即節(jié)點(diǎn)編號(hào)不可更改。 */ public void update(HeroNode heroNode) { // 定義一個(gè)輔助節(jié)點(diǎn) HeroNode temp = head; // 進(jìn)行鏈表是否為空判斷 if (head.next == null) { System.out.println("鏈表為空"); return; } // 表示節(jié)點(diǎn)編號(hào)是否被找到 boolean flag = false; // 使用循環(huán)去找節(jié)點(diǎn)編號(hào) while (true) { if (temp.no == heroNode.no) { flag = true; break; } if (temp.next == null) { break; } temp = temp.next; } // 如果找到節(jié)點(diǎn),就去修改值 if (flag) { temp.name = heroNode.name; } else { System.out.println("輸入有誤"); } } /** * 遍歷節(jié)點(diǎn)的方法 */ public void show() { // 通過頭節(jié)點(diǎn)判斷鏈表是否為空 HeroNode temp = head; while (true) { if (temp.next == null) { break; } // 每次輸出確保是可以進(jìn)行輸出的 HeroNode heroInfo = temp.next; System.out.println(heroInfo); temp = temp.next; } } /** * 根據(jù)節(jié)點(diǎn)的編號(hào)刪除對(duì)應(yīng)的節(jié)點(diǎn) * @param no */ public void delete(int no) { HeroNode temp = head; while (true) { if (temp.next == null) { System.out.println("要?jiǎng)h除的節(jié)點(diǎn)不存在"); break; } if (temp.next.no == no) { temp.next = temp.next.next; break; } temp = temp.next; } } } /** * 每個(gè)類實(shí)例就是一個(gè)節(jié)點(diǎn) */ class HeroNode { public int no; public String name; public HeroNode next; public HeroNode(int no, String name) { this.no = no; this.name = name; } @Override public String toString() { return "HeroNode{" + "no=" + no + ", name='" + name + '\'' + '}'; } }
?文章來源:http://www.zghlxwxcb.cn/news/detail-430383.html
雙向鏈表的添加操作文章來源地址http://www.zghlxwxcb.cn/news/detail-430383.html
public void add(HeroNode heroNode) {
// 因?yàn)槲补?jié)點(diǎn)不能動(dòng),所以設(shè)置一個(gè)指針節(jié)點(diǎn)
HeroNode temp = last;
// 新添加節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)為temp所在的節(jié)點(diǎn)
HeroNode heroNode1 = new HeroNode(heroNode.no, heroNode.name, temp, null);
// 進(jìn)行判斷若鏈表中只有一個(gè)元素,則將first指針指向該元素
if (last == null) {
first = heroNode1;
} else {
// 如果存在元素,就將元素追加到鏈表后面
temp.next = heroNode1;
}
// 進(jìn)行指針后移
last = heroNode1;
}
到了這里,關(guān)于單向帶頭鏈表的添加修改刪除操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!