本帖最后由 三木零 于 2022-3-23 11:12 编辑
只做了部分功能,原理都是差不多的
链表结构大概就是:一个根节点,后边许多的普通节点
根节点只有一个引用没有数据,存放数据的时候会先创建一个节点,然后创建的节点存放了数据
当有下一个数据存放进来的时候,根节点指向的那个节点会创建下一个节点存放着
链表是利用了递归的思想,即自己调用自己
[Java] 纯文本查看 复制代码 // 作为链表对象
class LinkList {
// 根节点
private Node root;
// 添加数据
public void add(int data) {
// 判断是否有节点,没有的话创建一个,有的话直接添加数据
if (this.root == null) {
this.root = new Node();
this.root.data = data;
} else {
this.root.add(data);
}
}
// 查看所有数据
public void select() {
if (this.root == null) {
System.out.println("null");
} else {
System.out.print("[");
this.root.select();
}
}
// 删除一个节点的数据,使用值作为参数来删除
// 因为链表的特性,可以直接把下一个节点赋值到当前节点来实现删除功能
public void delete(int data) {
// 需要判断一下下一个节点还有没有数据
if (root == null) {
System.out.println("没有这个数据");
return;
}
if (data == root.data) {
System.out.println("成功删除数据:" + data);
this.root = root.next;
} else {
this.root.delete(data);
}
}
// 节点类
class Node {
// 数据
private int data;
// 下一个节点
private Node next;
public Node() {
}
// 添加数据的方法
public void add(int data) {
// 如果next变量有节点则使用下一个节点的添加数据的方法
if (this.next == null) {
this.next = new Node();
this.next.data = data;
} else {
this.next.add(data);
}
}
// 查看数据
public void select() {
System.out.print(this.data);
if (this.next != null) {
System.out.print(",");
this.next.select();
} else {
System.out.print("]");
}
}
// 删除节点
public void delete(int data) {
// 需要判断一下下一个节点还有没有数据
if (this.next == null) {
System.out.println("没有这个数据");
return;
}
if (this.next.data == data) {
System.out.println("成功删除数据:" + data);
this.next = this.next.next;
} else {
this.next.delete(data);
}
}
}
}
=================Main方法中测试代码====================
[Java] 纯文本查看 复制代码 public class Main {
public static void main(String[] args) {
System.out.println("链表算法实现");
LinkList linkList = new LinkList();
linkList.add(12);
linkList.add(23);
linkList.add(34);
linkList.add(56);
linkList.add(78);
linkList.delete(78);
linkList.select();
}
}
=================测试结果====================
|