关于单链表的添加详情在上篇笔记中单链表的添加操作
本文章是添加和删除的合集,个人练习作业,如果有不对的地方欢迎指出!
接下来咱们来实现题目中的
删除第一个出现的某元素removeFrist(),
删除中间位置的某元素removeIndex(int data,int index)
删除第一次出现的元素x :removeValueOnce(int data)
删除所有的x元素:removeAllValue(int data)
基本步骤:找前驱节点、判断元素合法性、找特殊情况
注意:
1.无论是插入还是删除,第一个节点都需要额外判断,第一个元素不存在前驱节点
2.删除步骤中,应先接连node前一个元素与node后一个元素,再进行删除操作。
在多次删除时,应使用while循环进行多次判断。
后面附上代码以及运行截图。
import jdk.swing.interop.SwingInterOpUtils;
class Node {
// 存储具体元素
int data;
// 存储下一个结点地址(钩子)
Node next;
public Node(int data) {
this.data = data;
}
public Node(int data, Node next) {
this.data = data;
this.next = next;
}
}
public class SingleLinkedList {
//单链表的CRUD
private int size;
private Node head;
//单链表只能从前向后,不能从后向前。
//1.在火车头部插入一个新节点 -> 找前驱节点
public void addFrist(int data){
//使用addfirst向火车中插入元素
// 一个节点都没有 -> 新插入元素就是第一个
if (size == 0){
Node node = new Node(data);
head = node;
size ++;
}else{
//此时火车车厢中有节点
Node node = new Node(data);
node.next = head;
head = node;
size ++;
}
}
public void