本文共 8765 字,大约阅读时间需要 29 分钟。
class ListNode { public int data; public ListNode next; // ???? public ListNode prev; // ???? public ListNode(int data) { this.data = data; }} public class DoubleLinkedList { public ListNode head; // ??? public ListNode tail; // ???} // ???public void addFirst(int data) { ListNode node = new ListNode(data); if (this.head == null) { this.head = node; this.tail = node; } else { node.next = this.head; this.head.prev = node; this.head = node; }} // ???public void addLast(int data) { ListNode node = new ListNode(data); if (this.head == null) { this.tail = node; this.head = node; } else { this.tail.next = node; node.prev = this.tail; this.tail = node; }} // ????public void display() { ListNode cur = this.head; while (cur != null) { System.out.print(cur.data + " "); cur = cur.next; } System.out.println();} // ???????????????0???public void addIndex(int index, int data) { if (index < 0 || index > size()) { return; } if (index == 0) { addFirst(data); return; } if (index == size()) { addLast(data); return; } ListNode cur = searchIndex(index); ListNode node = new ListNode(data); node.next = cur; node.prev = cur.prev; cur.prev.next = node; cur.prev = node;}public ListNode searchIndex(int index) { ListNode cur = this.head; while (index > 0) { cur = cur.next; index--; } return cur;}// ?????public int size() { ListNode cur = this.head; int count = 0; while (cur != null) { cur = cur.next; count++; } return count;} // ???????????key??public void remove(int key) { ListNode cur = this.head; while (cur != null) { if (cur.data == key) { // ????????? if (cur == this.head) { this.head = this.head.next; this.head.prev = null; } else { cur.prev.next = cur.next; if (cur.next != null) { // ???????? cur.next.prev = cur.prev; } else { this.tail = cur.prev; } } // ???? return; } else { cur = cur.next; } }} public void removeAllkey(int key) { ListNode cur = this.head; while (cur != null) { if (cur.data == key) { // ????????? if (cur == this.head) { this.head = this.head.next; this.head.prev = null; } else { cur.prev.next = cur.next; if (cur.next != null) { // ???????? cur.next.prev = cur.prev; } else { this.tail = cur.prev; } } } cur = cur.next; }} // ??????public void clear() { ListNode cur = this.head; ListNode curNext; while (cur != null) { curNext = cur.next; cur.next = null; cur.prev = null; cur = curNext; } this.head = null; this.tail = null;} // ?????????keypublic boolean contains(int key) { if (head == null) { return false; } ListNode cur = this.head; while (cur != null) { if (cur.data == key) { return true; } cur = cur.next; } return false;} public class Test { public static void main(String[] args) { DoubleLinkedList doubleLinkedList = new DoubleLinkedList(); doubleLinkedList.addFirst(3); doubleLinkedList.addFirst(3); doubleLinkedList.addFirst(3); doubleLinkedList.addLast(4); doubleLinkedList.addLast(5); doubleLinkedList.addLast(3); // 3 2 1 4 5 6 doubleLinkedList.display(); doubleLinkedList.addIndex(3, 999); // 3 2 1 999 4 5 6 doubleLinkedList.display(); doubleLinkedList.remove(5); doubleLinkedList.display(); System.out.println(doubleLinkedList.contains(9)); doubleLinkedList.removeAllkey(3); doubleLinkedList.display(); doubleLinkedList.clear(); System.out.println("dadedsffw"); }} import java.util.List;/** * @Author ?? * @Date 2020/7/31 * @Time 10:54 */class ListNode { public int data; public ListNode next; // ???? public ListNode prev; // ???? public ListNode(int data) { this.data = data; }}public class DoubleLinkedList { public ListNode head; // ??? public ListNode tail; // ??? // ??? public void addFirst(int data) { ListNode node = new ListNode(data); if (this.head == null) { this.head = node; this.tail = node; } else { node.next = this.head; this.head.prev = node; this.head = node; } } // ??? public void addLast(int data) { ListNode node = new ListNode(data); if (this.head == null) { this.tail = node; this.head = node; } else { this.tail.next = node; node.prev = this.tail; this.tail = node; } } // ???? public void display() { ListNode cur = this.head; while (cur != null) { System.out.print(cur.data + " "); cur = cur.next; } System.out.println(); } // ???????????????0??? public void addIndex(int index, int data) { if (index < 0 || index > size()) { return; } if (index == 0) { addFirst(data); return; } if (index == size()) { addLast(data); return; } ListNode cur = searchIndex(index); ListNode node = new ListNode(data); node.next = cur; node.prev = cur.prev; cur.prev.next = node; cur.prev = node; } public ListNode searchIndex(int index) { ListNode cur = this.head; while (index > 0) { cur = cur.next; index--; } return cur; } // ????? public int size() { ListNode cur = this.head; int count = 0; while (cur != null) { cur = cur.next; count++; } return count; } // ???????????key?? public void remove(int key) { ListNode cur = this.head; while (cur != null) { if (cur.data == key) { // ????????? if (cur == this.head) { this.head = this.head.next; this.head.prev = null; } else { cur.prev.next = cur.next; if (cur.next != null) { // ???????? cur.next.prev = cur.prev; } else { this.tail = cur.prev; } } // ???? return; } else { cur = cur.next; } } } // ????key?? public void removeAllkey(int key) { ListNode cur = this.head; while (cur != null) { if (cur.data == key) { // ????????? if (cur == this.head) { this.head = this.head.next; this.head.prev = null; } else { cur.prev.next = cur.next; if (cur.next != null) { // ???????? cur.next.prev = cur.prev; } else { this.tail = cur.prev; } } } cur = cur.next; } } // ?????? public void clear() { ListNode cur = this.head; ListNode curNext; while (cur != null) { curNext = cur.next; cur.next = null; cur.prev = null; cur = curNext; } this.head = null; this.tail = null; } // ?????????key public boolean contains(int key) { if (head == null) { return false; } ListNode cur = this.head; while (cur != null) { if (cur.data == key) { return true; } cur = cur.next; } return false; }} 转载地址:http://coanz.baihongyu.com/