public class HeroNodeDemo { public static void main(String[] args) { HeroNode hero1 = new HeroNode(1, "松江"); HeroNode hero2 = new HeroNode(2, "武松"); HeroNode hero3 = new HeroNode(3, "及时雨"); 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(); } } /** * 创建一个管理节点的类 */ class SingledList { /** * 初始化一个头节点,头节点不能储有效数据,因为头节点可以帮助我们确定节点的初始位置 * 因此头节点不能动 */ HeroNode head = new HeroNode(0, ""); /** * 定义一个用于添加节点的方法 * @param heroNode */ public void add(HeroNode heroNode) { // 因为头节点不能动,所以设置一个指针节点 HeroNode temp = head; // 使用循环,遍历到最后一个节点 while (true) { if (temp.next == null) { break; } temp = temp.next; } temp.next = heroNode; } /** * 定义一个用于修改节点的方法,根据节点的编号进行修改,即节点编号不可更改。 */ public void update(HeroNode heroNode) { // 定义一个辅助节点 HeroNode temp = head; // 进行链表是否为空判断 if (head.next == null) { System.out.println("链表为空"); return; } // 表示节点编号是否被找到 boolean flag = false; // 使用循环去找节点编号 while (true) { if (temp.no == heroNode.no) { flag = true; break; } if (temp.next == null) { break; } temp = temp.next; } // 如果找到节点,就去修改值 if (flag) { temp.name = heroNode.name; } else { System.out.println("输入有误"); } } /** * 遍历节点的方法 */ public void show() { // 通过头节点判断链表是否为空 HeroNode temp = head; while (true) { if (temp.next == null) { break; } // 每次输出确保是可以进行输出的 HeroNode heroInfo = temp.next; System.out.println(heroInfo); temp = temp.next; } } /** * 根据节点的编号删除对应的节点 * @param no */ public void delete(int no) { HeroNode temp = head; while (true) { if (temp.next == null) { System.out.println("要删除的节点不存在"); break; } if (temp.next.no == no) { temp.next = temp.next.next; break; } temp = temp.next; } } } /** * 每个类实例就是一个节点 */ 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 + '\'' + '}'; } }
文章来源:https://www.toymoban.com/news/detail-430383.html
双向链表的添加操作文章来源地址https://www.toymoban.com/news/detail-430383.html
public void add(HeroNode heroNode) {
// 因为尾节点不能动,所以设置一个指针节点
HeroNode temp = last;
// 新添加节点的前一个节点为temp所在的节点
HeroNode heroNode1 = new HeroNode(heroNode.no, heroNode.name, temp, null);
// 进行判断若链表中只有一个元素,则将first指针指向该元素
if (last == null) {
first = heroNode1;
} else {
// 如果存在元素,就将元素追加到链表后面
temp.next = heroNode1;
}
// 进行指针后移
last = heroNode1;
}
到了这里,关于单向带头链表的添加修改删除操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!