双向链表
1.双向链表“节点”的定义
/**双向链表节点的定义
* @author xiaozhuang
* @creat 2023-07-17-14:38
*/
public class DoubleNode {
int data;
DoubleNode pre;//pre是指双向链表节点的前节点的指针
DoubleNode next;//next是指向双向链表节点的后节点的指针
public DoubleNode(int data){
this.data=data;
pre=null;
next=null;
}
}
2.双向链表的定义
/**定义一个双向链表
* @author xiaozhuang
* @creat 2023-07-17-18:52
*/
public class DoubleNodeList {
public DoubleNode first;
public DoubleNode last;
public DoubleNodeList(){
first=null;
last=first;
}
}
3.双向链表的插入
①头插入
/**
* 双向链表 头插入
* @param doubleNode 待插入的双向链表节点
* @return
*/
public void insertDoubleNodeFirst(DoubleNode doubleNode){
if (first==null){
last=doubleNode;
}else {
first.pre=doubleNode;
}
doubleNode.next=first;
first=doubleNode;
}
②尾插入
/**
* 双向链表 尾插入
* @param doubleNode 待插入的双向链表节点
*/
public void insertDoubleNodeLast(DoubleNode doubleNode){
if(first==null){
last=doubleNode;
}else{
doubleNode.pre=last;
last.next=doubleNode;
}
last=doubleNode;
}
③中间部分插入
4.双向链表的删除
待补充