单链表

最近闲的很开始回忆起以前学过的数据结构,写了一个链表,找找感觉,链表无非就是严谨的判断再加上引用的理解,这里跟大家分享一下。

package com.csmzxy.Link.T20121030;


/**ZXY单链表*/
public class LinkSingle {
 class Node{
  private String data;
  private Node next;
  public Node(String data){
   this.data = data;
  }
  /**添加节点*/
  public void add(Node newNode){
   if(this.next==null){
    this.next = newNode;
   }else{
    //不等于NULL回调继续判断下一个节点
    this.next.add(newNode);
   }
  }
  /**删除节点*/
  public void delete(Node previous,String data){
   if(data.equals(this.data)){
    previous.next = this.next;
   }else{
    if(this.next!=null){
     this.next.delete(this, data);
    }
   }
  }
  /**查询节点*/
  public boolean search(String data){
   if(data.equals(this.data)){
    return true;
   }else{
    if(this.next!=null){
     return this.next.search(data);
    }
   }
   return false;
  }
  /**输出节点*/
  public void print(){
   if(this!=null){
    System.out.print(this.data+"\t");
    if(this.next!=null){
     this.next.print();
    }
   }
  }
 }
 private Node root;
 public void addNode(String data){
  Node newNode = new Node(data);
  if(root==null){
   this.root = newNode;
  }else{
   this.root.add(newNode);
  }
 }
 
 public boolean searchNode(String data){
  return this.root.search(data);
 }
 
 public void deleteNode(String data){
  if(this.searchNode(data)){
   if(this.root.data.equals(data)){
    this.root = this.root.next;
   }else{
    this.root.next.delete(root, data);
   }
  }
 }
 public void printAllNode(){
  if(this.root!=null){
   this.root.print();
  }else{
   System.out.println("LinkSingle is Nnll!");
  }
 }
 /**检测方法*/
 public static void main(String[] args) {
  LinkSingle linkSingle = new LinkSingle();
  linkSingle.printAllNode();
  linkSingle.addNode("1");
  linkSingle.addNode("2");
  linkSingle.addNode("3");
  linkSingle.printAllNode();
  System.out.println();
  linkSingle.addNode("4");
  linkSingle.addNode("5");
  linkSingle.addNode("6");
  linkSingle.printAllNode();
  System.out.println();
  linkSingle.deleteNode("5");
  linkSingle.printAllNode();
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值