public class DoublyLinkedList {
@Test
public void test() {
Log.e("DoublyLinkedList", "000000000000000000000000000000000000000000000");
DoublyLinkedList doublyLinkedList = new DoublyLinkedList();
doublyLinkedList.add(12);
doublyLinkedList.add(123);
doublyLinkedList.add(1234);
doublyLinkedList.add(12345);
doublyLinkedList.show();
Log.e("DoublyLinkedList", "000000000000000000000000000000000000000000000");
doublyLinkedList.delete(5);
doublyLinkedList.delete(0);
doublyLinkedList.delete(2);
doublyLinkedList.show();
Log.e("DoublyLinkedList", "000000000000000000000000000000000000000000000");
}
class Node {
Node pre = null;
Node next = null;
int data;
Node(int data) {
this.data = data;
}
}
Node head = null;
public void add(int data) {
Node temp = new Node(data);
if (head == null) {
head = temp;
return;
}
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = temp;
temp.pre = current;
}
public void delete(int index) {
if (head == null) {
Log.e("DoublyLinkedList", "现在是空链表");
return;
}
Node current = head;
for (int i = 0; i < index; i++) {
//current就是要删除的结点
current = current.next;
if (current == null) {
Log.e("DoublyLinkedList", "链表没有这么大");
return;
}
}
//current是头结点的情况
if (current.pre == null) {
head = current.next;
return;
}
//current是最后一个结点的情况
if (current.next == null) {
current.pre.next = null;
return;
}
current.pre.next = current.next;
current.next.pre = current.pre;
}
public void show() {
Node current = head;
int count = 0;
if (current == null) {
Log.e("DoublyLinkedList", "链表还是空的哦");
return;
}
while (current != null) {
Log.e("DoublyLinkedList", "下标是" + count + "的结点值是:" + current.data);
current = current.next;
count++;
}
}
}