更新時間:2019-08-29 11:41:38 來源:動力節點 瀏覽2478次
今天動力節點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節點,需要兩個指針,一個正向存儲下一個元素的位置,一個反向存儲下一個元素的位置
參數說明:
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://m.dabaquan.cn/xiazai/2484.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習