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