package org.structure.linkedList;
/**
* @author cjj_1
* @date 2020-08-04 15:57
*/
public class DoubleLinkedListDemo {
public static void main(String[] args) {
DoubleLinkedNode node1 = new DoubleLinkedNode(1,"张三","三三");
DoubleLinkedNode node2 = new DoubleLinkedNode(2,"李四","44");
DoubleLinkedNode node3 = new DoubleLinkedNode(3,"王五","55");
DoubleLinkedNode node4 = new DoubleLinkedNode(4,"薛六","66");
DoubleLinkedList list = new DoubleLinkedList();
list.add(node1);
list.add(node2);
list.add(node3);
list.add(node4);
list.showList();
System.out.println("---删除节点---");
list.delete(node2);
list.showList();
System.out.println("---修改节点---");
list.update( new DoubleLinkedNode(4,"薛六","666666"));
list.showList();
}
}
/**
* 管理节点类
*/
class DoubleLinkedList{
DoubleLinkedNode head = new DoubleLinkedNode(0,null,null);
/**
* 增加节点
* @param node
*/
public void add(DoubleLinkedNode node){
DoubleLinkedNode temp = head;
while (temp.next != null)
temp = temp.next;
temp.next=node;
node.pre = temp;
}
/**
* 展示双向链表
*/
public void showList(){
DoubleLinkedNode temp = head;
if(temp == null)
System.out.println("双向链表为空!!");
while (temp != null){
System.out.println(temp);
temp = temp.next;
}
}
/**
* 修改
*/
public void update(DoubleLinkedNode node){
DoubleLinkedNode temp = head;
Boolean flag = Boolean.FALSE;
if(temp == null)
System.out.println("双向链表为空!!");
while (temp != null){
if(temp.no == node.no){
flag = Boolean.TRUE;
break;
}
temp = temp.next;
}
if(flag){
System.out.println("修改前:"+temp);
temp.name = node.name;
temp.nick = node.nick;
System.out.println("修改后:"+temp);
}else {
System.out.println("没有找到节点:"+node);
}
}
/**
* 删除节点
* @param node
*/
public void delete(DoubleLinkedNode node){
DoubleLinkedNode temp = head;
Boolean flag = Boolean.FALSE;
if(temp == null)
System.out.println("双向链表为空!!");
while (temp != null){
if(temp.no == node.no){
flag = Boolean.TRUE;
break;
}
temp = temp.next;
}
if(flag){
//因为有头指针
temp.pre.next = temp.next;
if(temp.next!=null)
temp.next.pre = temp.pre;
}else {
System.out.println("没有找到节点:"+node);
}
}
}
/**
* 节点累
*/
class DoubleLinkedNode{
int no;
String name;
String nick;
DoubleLinkedNode next;
DoubleLinkedNode pre;
public DoubleLinkedNode(int no,String name,String nick){
this.no = no;
this.name =name;
this.nick = nick;
}
@Override
public String toString() {
return "DoubleLinkedNode{" +
"no=" + no +
", name='" + name + '\'' +
", nick='" + nick + '\'' +
'}';
}
}
双向链表-增删改查
猜你喜欢
转载自blog.csdn.net/weixin_40128696/article/details/107791827
今日推荐
周排行