本文共 3378 字,大约阅读时间需要 11 分钟。
在Java中,我们可以通过自定义类来实现双向链表。以下是一个简单的实现示例:
class DoubleLinkedList { private HeroNode head = new HeroNode(0, "", ""); public void add(HeroNode heroNode) { HeroNode temp = head; while (true) { if (temp.next == null) { break; } temp = temp.next; } temp.next = heroNode; heroNode.pre = temp; } public void showLinklist() { if (head.next == null) { System.out.println("链表为空"); return; } HeroNode temp = head.next; while (temp != null) { System.out.println(temp); temp = temp.next; } }}class HeroNode { public int id; public String name; public String nickname; public HeroNode next; public HeroNode pre; public HeroNode(int id, String name, String nickname) { this.id = id; this.name = name; this.nickname = nickname; } @Override public String toString() { return "HeroNode [id=" + id + ", name=" + name + ", nickname=" + nickname + "]"; }}
以下是链表的主要操作实现:
添加节点:
修改节点信息:
删除节点:
DoubleLinkedList doubleLinkedList = new DoubleLinkedList();HeroNode a = new HeroNode(1, "dhl", "beyond");HeroNode d = new HeroNode(4, "dhu", "beyond");HeroNode c = new HeroNode(3, "dhp", "beyond");HeroNode b = new HeroNode(2, "dhn", "beyond");doubleLinkedList.add(a);doubleLinkedList.add(b);doubleLinkedList.add(c);doubleLinkedList.add(d);doubleLinkedList.showLinklist();
HeroNode newHeroNode = new HeroNode(4, "ttt", "nothing");doubleLinkedList.updata(newHeroNode);doubleLinkedList.showLinklist();
doubleLinkedList.del(3);doubleLinkedList.showLinklist();
public void add(HeroNode heroNode) { HeroNode temp = head; while (temp.next != null) { temp = temp.next; } temp.next = heroNode; heroNode.pre = temp;}
public void updata(HeroNode newHeroNode) { if (head.next == null) { System.out.println("链表为空~~"); return; } HeroNode temp = head.next; while (temp != null) { if (temp.id == newHeroNode.id) { temp.name = newHeroNode.name; temp.nickname = newHeroNode.nickname; break; } temp = temp.next; }}
public void del(int id) { if (head.next == null) { System.out.println("链表为空"); return; } HeroNode temp = head.next; while (temp != null) { if (temp.id == id) { temp.pre.next = temp.next; if (temp.next != null) { temp.next.pre = temp.pre; } break; } temp = temp.next; }}
DoubleLinkedList doubleLinkedList = new DoubleLinkedList();// 添加节点HeroNode a = new HeroNode(1, "dhl", "beyond");HeroNode b = new HeroNode(2, "dhn", "beyond");HeroNode c = new HeroNode(3, "dhp", "beyond");HeroNode d = new HeroNode(4, "dhu", "beyond");doubleLinkedList.add(a);doubleLinkedList.add(b);doubleLinkedList.add(c);doubleLinkedList.add(d);doubleLinkedList.showLinklist();
HeroNode newHeroNode = new HeroNode(4, "ttt", "nothing");doubleLinkedList.updata(newHeroNode);doubleLinkedList.showLinklist();
doubleLinkedList.del(3);doubleLinkedList.showLinklist();
转载地址:http://iekk.baihongyu.com/