java 自定义双向链表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
public class DoubleLink<E> { private int n; private Node first; private Node last;
private class Node { E value; Node next; Node prev;
@Override public String toString() { return value + " "; } }
public void add(E value) { Node oldlast = last; last = new Node(); last.value = value; last.next = null; if (n == 0) { first = last; } else { oldlast.next = last; last.prev = oldlast; last.next = first; } n++; }
public DoubleLink<E> reverse(DoubleLink<E> link) { DoubleLink<E> newLink = new DoubleLink<E>(); Node node = link.last; for (int i = 0; i < link.n; i++) { newLink.add(node.value); node = node.prev; } return newLink; }
@Override public String toString() { StringBuilder str = new StringBuilder(); Node node = first; for (int i = 0; i < n; i++) { str.append(node); node = node.next; } return str.toString(); }
public static void main(String[] args) { DoubleLink<Integer> doubleLink = new DoubleLink<Integer>(); doubleLink.add(1); doubleLink.add(2); doubleLink.add(3);
System.out.println(doubleLink.toString());
System.out.println(doubleLink.reverse(doubleLink));
}
}
|
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏