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; //如果当前调用对象的下一个叫节点为空,那么就在该当前节点后插入新<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>的节点。 }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("第二节点")); } } 

posted on 2009-12-22 22:54 Jesuca 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Jesuca/archive/2009/12/22/1952269.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值