专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 JAVA实现双向链表的增删功能的方法有哪些

JAVA实现双向链表的增删功能的方法有哪些

更新时间:2019-08-29 11:41:38 来源:动力节点 浏览2034次

  


今天动力节点java培训机构小编为大家介绍“JAVA实现双向链表的增删功能的方法”,希望通过此文能够帮助到大家,下面就随小编一起看看JAVA实现双向链表的增删功能的方法都有哪些?


JAVA实现双向链表的增删功能,完整代码如下:


package linked;

class LinkedTable{  

}

public class LinkedTableTest {

   //构造单链表

  static Node node1 = new Node("name1");

  static Node node2 = new Node("name2");

  static Node node3 = new Node("name3");

  static Node node4 = new Node("name4");

  static Node node5 = new Node("name5");

  public static void main(String[] args)

  {

    //设置指针

    setPoint();

     

    //循环遍历

    System.out.println("*******初始链表*******");

    out(node1,node5);

    System.out.println();

     

    //插入节点在node2的后面

    addNode(node2,node3);

     

    // 循环遍历

    System.out.println("*******插入node2.5*******");

    out(node1, node5);

    System.out.println();

         

    //删除节点

    node2.setNextNode(node3);

    node3.setNextNodeF(node2);

     

    // 循环遍历

    System.out.println("*******删除node2.5*******");

    out(node1, node5);

    System.out.println();

     

  }

   

  //设置指针

  public static void setPoint()

  {

    //设置正向指针

    node1.setNextNode(node2);

    node2.setNextNode(node3);

    node3.setNextNode(node4);

    node4.setNextNode(node5);

    //设置反向指针

    node5.setNextNodeF(node4);

    node4.setNextNodeF(node3);

    node3.setNextNodeF(node2);

    node2.setNextNodeF(node1);

  }

   

  //循环遍历单链表

  public static void outLinked(Node startNode){

    Node node= new Node();

    node.setNextNode(startNode);

    do

    {

      node=node.getNextNode();

      System.out.print(node.getName()+"----");  

    }while(node.getNextNode()!=null);

  }

   

  //反向循环遍历单链表

  public static void outLinkedF(Node endNode){

    Node node= new Node();

    node.setNextNodeF(endNode);

    do

    {

      node=node.getNextNodeF();

      System.out.print(node.getName()+"----");  

    }while(node.getNextNodeF()!=null);

  }

   

  //循环遍历

  public static void out(Node startNode,Node endNode)

  {

    outLinked(startNode);

    System.out.println();

    outLinkedF(endNode);    

  }

   

  //插入节点

  public static void addNode(Node preNode,Node nextNode)

  {

    Node node_add = new Node("name2.5");

    node_add.setNextNode(preNode.getNextNode());

    preNode.setNextNode(node_add);    

    node_add.setNextNodeF(nextNode.getNextNodeF());

    nextNode.setNextNodeF(node_add);

  }  

}

 

class Node {

  private String name;

  private Node nextNode;

  private Node nextNodeF;

  public void setName(String name)

  {

    this.name=name;

  }

  public void setNextNode(Node nextNode)

  {

    this.nextNode=nextNode;

  }

  public void setNextNodeF(Node nextNodeF)

  {

    this.nextNodeF=nextNodeF;

  }

  public String getName()

  {

    return this.name;

  }

  public Node getNextNode()

  {

    return this.nextNode;

  }

  public Node getNextNodeF()

  {

    return this.nextNodeF;

  }

  public Node(String name)

  {

    this.name=name;

    this.nextNode=null;

  }

  public Node( )

  {    

  }  

}


1、构造node节点,需要两个指针,一个正向存储下一个元素的位置,一个反向存储下一个元素的位置


JAVA实现双向链表的增删功能的方法有哪些


参数说明:


  name:用于存储node自身的信息


  nextNode:用于存储正向指针


  nextNodeF:用于存储反向指针


class Node {

  private String name;

  private Node nextNode;

  private Node nextNodeF;

  public void setName(String name)

  {

    this.name=name;

  }

  public void setNextNode(Node nextNode)

  {

    this.nextNode=nextNode;

  }

  public void setNextNodeF(Node nextNodeF)

  {

    this.nextNodeF=nextNodeF;

  }

  public String getName()

  {

    return this.name;

  }

  public Node getNextNode()

  {

    return this.nextNode;

  }

  public Node getNextNodeF()

  {

    return this.nextNodeF;

  }

  public Node(String name)

  {

    this.name=name;

    this.nextNode=null;

  }

  public Node( )

  {    

  }  

}



2、创建节点,设置指针连接节点


正向指针:指向下一个节点


反向节点:指向上一个节点


//构造单链表

  static Node node1 = new Node("name1");

  static Node node2 = new Node("name2");

  static Node node3 = new Node("name3");

  static Node node4 = new Node("name4");

  static Node node5 = new Node("name5");


public static void setPoint()

  {

    //设置正向指针

    node1.setNextNode(node2);

    node2.setNextNode(node3);

    node3.setNextNode(node4);

    node4.setNextNode(node5);

    //设置反向指针

    node5.setNextNodeF(node4);

    node4.setNextNodeF(node3);

    node3.setNextNodeF(node2);

    node2.setNextNodeF(node1);

  }



3、将链表循环遍历输出


public static void outLinked(Node startNode){

    Node node= new Node();

    node.setNextNode(startNode);

    do

    {

      node=node.getNextNode();

      System.out.print(node.getName()+"----");  

    }while(node.getNextNode()!=null);

  }



public static void outLinkedF(Node endNode){

  Node node= new Node();

  node.setNextNodeF(endNode);

  do

  {

    node=node.getNextNodeF();

    System.out.print(node.getName()+"----");  

  }while(node.getNextNodeF()!=null);

}



4、添加节点


public static void addNode(Node preNode,Node nextNode)

{

  Node node_add = new Node("name2.5");

  node_add.setNextNode(preNode.getNextNode());

  preNode.setNextNode(node_add);

   

  node_add.setNextNodeF(nextNode.getNextNodeF());

  nextNode.setNextNodeF(node_add);

}



5,删除节点


node2.setNextNode(node3);

node3.setNextNodeF(node2);


以上就是动力节点java培训机构小编介绍的“JAVA实现双向链表的增删功能的方法”的内容,希望能够帮助到大家,更多java最新资讯内容请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。


相关视频教程推荐


java双向链表视频教程下载:http://www.bjpowernode.com/xiazai/2484.html



提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>