双向链表实现(java)
java代码实现
package com.bingym.linkedlist.doublelist;
public class DoubleLinkedList {
private Node head = new Node(0,"");
public Node getHead() {
return head;
}
private boolean isEmpty() {
return head.next == null;
}
public void add(Node node) {
Node temp = head;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = node;
node.pre = temp;
}
public void list() {
if (isEmpty()) {
System.out.println("双向链表为空,没有任何节点信息...");
return;
}
Node temp = head.next;
while (true) {
if (temp == null) {
System.out.println();
break;
}
System.out.print(temp + "-->");
temp = temp.next;
}
}
public void update(Node newNode) {
if (isEmpty()) {
System.out.println("双向链表为空,没有您要修改的节点信息");
}
boolean flag = false;
Node temp = head.next;
while (true) {
if (temp == null) {
break;
}
if (temp.index == newNode.index) {
flag = true;
break;
}
temp =temp.next;
}
if (flag) {
temp.data = newNode.data;
}else {
System.out.printf("您要修改的index = %d的节点信息不存在\n",newNode.index);
}
}
public void remove(int index) {
if (isEmpty()) {
System.out.println("双向链表为空,没有可以删除的节点信息");
}
boolean flag = false;
Node temp = head.next;
while (true) {
if (temp == null) {
break;
}
if (temp.index == index) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.pre.next = temp.next;
if (temp.next != null) {
temp.next.pre = temp.pre;
}
}else {
System.out.printf("您要删除的index = %d节点信息不存在",index);
}
}
}
class Node {
public int index;
public String data;
public Node pre;
public Node next;
public Node(int index, String data) {
this.index = index;
this.data = data;
}
@Override
public String toString() {
return "Node{" +
"index=" + index +
", data='" + data + '\'' +
'}';
}
}