public class DoubleLinkedList {
private Node headNode = new Node();
public class Node{
private int id;
private String content;
private Node pre;
private Node next;
public Node(){}
public Node(int id,String content){
this.id = id;
this.content = content;
}
@Override
public String toString() {
return "Node{" +
"id=" + id +
", content='" + content + '\'' +
'}';
}
}
/**
* 双链表添加,默认添加到最后
*/
public void addDoubleLinkedList(Node node){
Node temp = headNode;
while(true){
if(temp.next == null){
temp.next = node;
node.pre = temp;
break;
}
temp = temp.next;
}
}
/**
* 双链表添加,按id顺序添加,并且不添加id相同的节点
*/
public void addDoubleLinkedListById(Node node){
Node temp = headNode;
boolean flag = false;
while(true){
if(temp.next == null){
flag = true;
break;
}
if(temp.next.id > node.id){
flag = true;
break;
}
if(temp.next.id == node.id){
System.out.println(node.id + "已存在!");
break;
}
temp = temp.next;
}
if(flag){
/**
* 刚好在最后一个位置特殊一点
*/
if(temp.next == null){
temp.next = node;
node.pre = temp;
} else {
temp.next.pre = node;
node.next = temp.next;
temp.next = node;
node.pre = temp;
}
}
}
/**
* 双链表删除
*/
public void deleteDoubleLinkedList(int id){
Node temp = headNode;
if(headNode.next == null){
System.out.println("链表为空,无需删除");
return;
}
while(true){
if(temp.next == null){
System.out.println("需要删除的节点不存在");
break;
}
if(temp.next.id == id){
// 下面这句要放在分支语句后否则会空指针。
// temp.next = temp.next.next;
if(temp.next.next != null){
temp.next.next.pre = temp;
}
temp.next = temp.next.next;
break;
}
temp = temp.next;
}
}
/**
* 双链表更新
*/
public void updateDoubleLinkedList(Node node){
Node temp = headNode;
while(true){
if(headNode.next == null){
System.out.println("链表为空");
return;
}
if(temp.next == null){
System.out.printf("未找到id为%d的节点",node.id);
break;
}
if(temp.id == node.id){
temp.content = node.content;
break;
}
temp = temp.next;
}
}
/**
* 双链表查询
*/
public void readDoubleLinkedList(){
Node temp = headNode;
if(headNode.next == null){
System.out.println("链表为空");
return;
}
while(true){
if (temp.next == null) {
break;
}
System.out.println(temp.next);
temp = temp.next;
}
}
}
java 双链表
最新推荐文章于 2024-06-14 15:02:13 发布