单链表实现
1 定义
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
2 基本操作
在链表头添加元素
查询包含指定数值的节点
删除指定节点
3 包含元素
链表头 head
节点 Node
节点中数据域 data
节点中指针域 next
链表长度 size
4 分析
节点Node由数据域和指针域构成
数据域和指针域单链表整体
单链表整体插入操作
在链表头添加元素的过程就是让新节点的下一节点指向头节点,再让头节点指向新节点
newNode.next = first
first = newNode
删除操作
删除操作分两步:
- 先找到要删除的节点
- 删除该节点
删除节点时需要判断该节点是不是第一个
具体程序实现
public class SingleLinkedList {
private Node first;
public SingleLinkedList() {
first = null;
}
public void insert(int data){
Node newNode = new Node(data);
newNode.next = first;
first = newNode;
}
public Node find(int data){
Node current = first;
while (current.data != data){
if (current.next == null){
return null;
}else {
current = current.next;
}
}
return current;
}
public Node delete(int data){
Node current = first;
Node previous = first;
current = find(data);
if (current != null){
if (current == first){
first = first.next;
}else {
previous.next = current.next;
}
}
return current;
}
class Node{
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
@Override
public String toString() {
return "Node{" +
"data=" + data +
'}';
}
}
public void disPlay(){
Node temp = first;
while (temp != null){
System.out.println(temp.data);
temp = temp.next;
}
}
}
网友评论