JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法有哪些

JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法有哪些

長(zhǎng)沙中公優(yōu)就業(yè)      2022-04-15 02:21:01     9

JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法有哪些,  今天長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法”,希望通過此文能夠幫助到大家,下面就

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

  


今天長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法”,希望通過此文能夠幫助到大家,下面就隨小編一起看看JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法都有哪些?


JAVA實(shí)現(xiàn)雙向鏈表的增刪功能,完整代碼如下:


package linked;

class linkedTable{  

}

public class linkedTableTest {

   //構(gòu)造單鏈表

  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)

  {

    //設(shè)置指針

    setPoint();

     

    //循環(huán)遍歷

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

    out(node1,node5);

    System.out.println();

     

    //插入節(jié)點(diǎn)在node2的后面

    addNode(node2,node3);

     

    // 循環(huán)遍歷

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

    out(node1, node5);

    System.out.println();

         

    //刪除節(jié)點(diǎn)

    node2.setNextNode(node3);

    node3.setNextNodeF(node2);

     

    // 循環(huán)遍歷

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

    out(node1, node5);

    System.out.println();

     

  }

   

  //設(shè)置指針

  public static void setPoint()

  {

    //設(shè)置正向指針

    node1.setNextNode(node2);

    node2.setNextNode(node3);

    node3.setNextNode(node4);

    node4.setNextNode(node5);

    //設(shè)置反向指針

    node5.setNextNodeF(node4);

    node4.setNextNodeF(node3);

    node3.setNextNodeF(node2);

    node2.setNextNodeF(node1);

  }

   

  //循環(huán)遍歷單鏈表

  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);

  }

   

  //反向循環(huán)遍歷單鏈表

  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);

  }

   

  //循環(huán)遍歷

  public static void out(Node startNode,Node endNode)

  {

    outlinked(startNode);

    System.out.println();

    outlinkedF(endNode);    

  }

   

  //插入節(jié)點(diǎn)

  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、構(gòu)造node節(jié)點(diǎn),需要兩個(gè)指針,一個(gè)正向存儲(chǔ)下一個(gè)元素的位置,一個(gè)反向存儲(chǔ)下一個(gè)元素的位置



參數(shù)說明:


  name:用于存儲(chǔ)node自身的信息


  nextNode:用于存儲(chǔ)正向指針


  nextNodeF:用于存儲(chǔ)反向指針


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、創(chuàng)建節(jié)點(diǎn),設(shè)置指針連接節(jié)點(diǎn)


正向指針:指向下一個(gè)節(jié)點(diǎn)


反向節(jié)點(diǎn):指向上一個(gè)節(jié)點(diǎn)


//構(gòu)造單鏈表

  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()

  {

    //設(shè)置正向指針

    node1.setNextNode(node2);

    node2.setNextNode(node3);

    node3.setNextNode(node4);

    node4.setNextNode(node5);

    //設(shè)置反向指針

    node5.setNextNodeF(node4);

    node4.setNextNodeF(node3);

    node3.setNextNodeF(node2);

    node2.setNextNodeF(node1);

  }



3、將鏈表循環(huán)遍歷輸出


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、添加節(jié)點(diǎn)


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,刪除節(jié)點(diǎn)


node2.setNextNode(node3);

node3.setNextNodeF(node2);


以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編介紹的“JAVA實(shí)現(xiàn)雙向鏈表的增刪功能的方法”的內(nèi)容,希望能夠幫助到大家,更多java最新資訊內(nèi)容請(qǐng)繼續(xù)關(guān)注長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。


相關(guān)視頻教程推薦


java雙向鏈表視頻教程下載:http://www.bjpowernode.com/xiazai/2484.html



培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。