package DoubleLinkedList; public class linkedListSentinel { private static class Node { Node prev; int value; Node next; public Node(Node prev, int value, Node next) { this.prev = prev; this.value = value; this.next = next; } } private Node sentinel = new Node(null, -1, null); public linkedListSentinel() { sentinel.prev = sentinel; sentinel.next = sentinel; } //添加第一个 public void addFirst(int value) { Node a = sentinel; Node b = sentinel.next; Node added = new Node(a, value, b); a.next = added; b.prev = added; } //添加最后一个 public void addLast(int value) { Node a = sentinel.prev; Node b = sentinel; Node added = new Node(a, value, b); a.next = added; b.prev = added; } //删除第一个 public void removeFirst() { Node removed = sentinel.next; if (removed == sentinel) { illegalIndex(0); } Node a = sentinel; Node b = removed.next; a.next = b; b.prev = a; } //删除最后一个 public void removeLast() { Node removed = sentinel.prev; if (removed == sentinel) { illegalIndex(0); } Node a = removed.prev; Node b = sentinel; a.next = b; b.prev = a; } //遍历 public void loop() { for (Node p = sentinel.next; p != sentinel; p = p.next) { System.out.println(p.value); } } //根据值删除 public void removeByValue(int value) { Node removed = findByValue(value); if (removed == null) { return; } Node a = removed.prev; Node b = removed.next; a.next = b; b.prev = a; } private Node findByValue(int value) { Node p = sentinel.next; while (p != sentinel) { if (p.value == value) { return p; } p = p.next; } return null; } //抛出异常 private static void illegalIndex(int index) { throw new IllegalArgumentException(String.format("index[%d] 不合法%n", index)); } }
文章来源地址https://www.toymoban.com/news/detail-457567.html
文章来源:https://www.toymoban.com/news/detail-457567.html
到了这里,关于环形链表的学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!