public class LinkList{
public static void main(String args[]) {
Link l = new Link();
l.add("h");
l.add("e");
l.add("l");
l.add("l");
l.add("o");
l.print();
System.out.println("\n"+l.find("h"));
l.del("h");
l.print();
}
}
class Link{
class Node{
private String data;
private Node next;
public Node(String data) {
this.data = data;
}
public void addNode(Node node){
if(this.next==null) { //如果下一个节点为空则将下一个节点设置为node
this.next = node;
}else { //下一个节点不为空则递归调用此函数
this.next.addNode(node);
}
}
public void printNode() {
System.out.print(this.data+"\t"); //输出节点
if(this.next!=null) { //下一个节点不为null则递归
this.next.printNode();
}
}
public boolean search(String data) {
if(this.data.equals(data)) { //相等返回true
return true;
}else {
if(this.next!=null) { //下个节点不为空则递归
return this.next.search(data);
}else {
return false;
}
}
}
public void delete(Node pervious, String data) {
if(this.data.equals(data)) {
pervious = this.next; //将该节点的下一个节点给前驱节点
}else {
if(this.next!=null) {
this.next.delete(this,data);//否则递归
}
}
}
}
private Node root; //每个单链表都有一个头结点
public void add(String data) {
Node newnode = new Node(data);
if(this.root==null) { //如果头结点为空则将数据传入头结点
this.root = newnode;
}else { //不为空则进入内部类中的addNode方法
this.root.addNode(newnode);
}
}
public void print() {
if(this.root!=null) { //首先判断头结点是否为空
this.root.printNode();
}
}
public boolean find(String data) {
return this.root.search(data);
}
public void del(String data) {
if(find(data)) {
if(this.root.data.equals(data)) { //先判断头结点是否为空
this.root = this.root.next;
}else {
this.root.next.delete(this.root,data);
}
}
}
}
java单链表的实现利用内部类
最新推荐文章于 2024-06-17 17:45:50 发布