1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java链表的书_JAVA实现双向链表的增删功能 完整代码package linked;class LinkedTa

Java链表的书_JAVA实现双向链表的增删功能 完整代码package linked;class LinkedTa

时间:2024-01-24 08:31:16

相关推荐

Java链表的书_JAVA实现双向链表的增删功能 完整代码package linked;class LinkedTa

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实现双向链表的增删功能 完整代码package linked;class LinkedTable{ }public class Linke...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。