java操作链表_Java链表操作

class Link{

class Node{

private String name;

private Node next;

public Node(String name){

this.name = name ;

}

public String getName(){

return this.name;

}

public Node getNext(){

return this.next;

}

public void addNode(Node newNode){

if (this.next == null){

this.next = newNode;//如果当前调用对象的下一个叫节点为空,那么就在该当前节点后插入新的节点。

}else{

this.next.addNode(newNode);//如果当前节点的下一个节点不为空,那么通过this.next继续查找下一个节点是否为空。(下一个叫节点).addNode(newNode)

}

}

public void delNode(Node preNode , String name){

if (this.name.equals(name)){

preNode.next = this.next;//如果当前节点就是要删除的节点,则把当前节点的前一节点的next值设为,下一节点的next值,从而是链表断开。

}else{

this.next.delNode(this,name);

}

}

public boolean searchNode(String name){

if (this.getName().equals(name)){

return true;//如果当前节点的name值与参数name相等,则返回true

}else{

if(this.next.searchNode(name)){

return true;

}else{

return false;

}

}

}

public void printNode(){

System.out.print(this.name);//输入当前节点的name。

if (this.next != null){

System.out.print("->");

this.next.printNode();//如果当前节点的下一节点不为空,则继续调用printNode方法输出下一节点name。如果为空的话,则不继续查找下一节点。

}

}

}

private Node root;

public void add(String name){

Node newNode = new Node(name); //声明一个新的Node的实例化对象。

if (this.root == null){

this.root = newNode;//如果root为空,那么就把当前的实例化对象作为root。

}else{

this.root.addNode(newNode);//如果root不为空,则直接通过root调用addNode方法,并把新的实例化对象作为参数传递。

}

}

public void print(){

if (this.root != null)

this.root.printNode(); //如果当前链表对象的root不为空,则直接通过root调用Node类中的printNode()方法。

}

public boolean search(String name){

if (this.root.searchNode(name)){

return true;

}else{

return false;

}

}

public void delete(String name){

if (search(name)){

if (this.root.getName().equals(name)){

this.root = this.root.next; //该变根节点。

}else{

this.root.next.delNode(root,name);

}

}else{

System.out.println("This node is not exits");

}

}

}

public class LinkDemo02{

public static void main(String args[]){

Link link = new Link();

link.add("第一节点");

link.add("第二节点");

link.add("第三节点");

link.add("第四节点");

link.add("第五节点");

link.delete("第三节点");

link.delete("第一节点");

link.print();

System.out.println();

link.add("第一节点");

link.print();

System.out.println();

link.add("第三节点");

link.print();

//System.out.println(link.search("第二节点"));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值