
package com.ws.链表.双向链表.插入到指定位置;
public class DoubleLinkeListTest {
public static void main(String[] args) {
System.out.println("双向链表的测试");
Node node1=new Node(1,"王","小王");
Node node2=new Node(4,"马","小马");
Node node3=new Node(3,"刘","小刘");
Node node4=new Node(2,"琳","小琳");
DoubleLinkeList doubleLinkeList=new DoubleLinkeList();
doubleLinkeList.addNode(node1);
doubleLinkeList.addNode(node2);
doubleLinkeList.addNode(node3);
doubleLinkeList.addNode(node4);
System.out.println("---------------------------------");
System.out.println("显示链表");
doubleLinkeList.list();
}
}
class Node{
public int paixu;
public String name;
public String nixkname;
public Node next;
public Node qian;
public Node(int paixu,String name,String nixkname){
this.paixu=paixu;
this.name=name;
this.nixkname=nixkname;
}
@Override
public String toString() {
return "Node{" +
"paixu=" + paixu +
", name='" + name + '\'' +
", nixkname='" + nixkname + '\'' +
'}';
}
}
class DoubleLinkeList{
private Node head=new Node(0,"","");
public Node getHead(){
return head;
}
public void list(){
if (head.next==null){
System.out.println("链表为空");
return;
}
Node listnode=head.next;
while (true){
if (listnode==null){
break;
}
System.out.println(listnode);
listnode=listnode.next;
}
}
public void add(Node node){
Node listnode=head;
while (true){
if (listnode.next==null){
break;
}
listnode=listnode.next;
}
listnode.next=node;
node.qian=listnode;
}
public void addNode(Node node) {
Node listNode = head;
boolean flag = false;
while (true) {
if (listNode.next == null) {
break;
}
if (listNode.next.paixu > node.paixu) {
break;
} else if (listNode.next.paixu == node.paixu) {
flag = true;
break;
}
listNode = listNode.next;
}
if (flag) {
System.out.printf("添加编号【%d】已经存在,不能加入\n", listNode.next.paixu);
} else {
if (listNode.next!=null){
node.next=listNode.next;
listNode.next.qian=node;
}
listNode.next=node;
node.qian=listNode;
}
}
public void update(Node node){
if (head.next==null){
System.out.println("链表为空");
return;
}
Node listnode=head.next;
boolean flag=false;
while (true){
if (listnode==null){
break;
}
if (listnode.paixu==node.paixu){
flag=true;
break;
}
listnode=listnode.next;
}
if (flag){
listnode.name=node.name;
listnode.nixkname=node.nixkname;
}else {
System.out.printf("没有找到编号【%d】的节点,不能修改\n",node.paixu);
}
}
public void delete(int paixu){
if (head.next==null){
System.out.println("链表为空,不能删除");
return;
}
Node listnode=head.next;
boolean flag=false;
while (true){
if (listnode==null){
break;
}
if (listnode.paixu==paixu){
flag=true;
break;
}
listnode=listnode.next;
}
if (flag){
listnode.qian.next=listnode.next;
if (listnode.next!=null){
listnode.next.qian=listnode.qian;
}
}else {
System.out.printf("要删除的【%d】节点不存在\n",paixu);
}
}
}