1、节点
2、链表
3、测试类
1、节点
package com.cwq.ch04;
/**
* 节点,先定义每个数据的格式
* @author Carpoor
* @date 2019年1月29日
*/
public class Node {
public long data;
public Node next;
public Node(long data) {
this.data = data;
}
public void display() {
System.out.print(data + " ");
}
}
2、链表
package com.cwq.ch04;
/**
* 链表,将数据串起来
* @author Carpoor
* @date 2019年1月29日
*/
public class MyLinkedList {
private Node first;
public MyLinkedList() {
first = null;
}
/**
* 插入数据
*/
public void insertFirst(long value) {
Node node = new Node(value);
node.next = first;
first = node;
}
/**
* 删除数据
*/
public Node deleteFirst() {
Node tmp = first;
first = first.next;
return tmp;
}
/**
* 展示数据
*/
public void display() {
Node current = first;
while (current != null) {
current.display();
current = current.next;
}
System.out.println();
}
/**
* 查找数据
*/
public Node find(long value) {
Node current = first;
while (current.data != value) {
if (current.next == null) {
return null;
}
current = current.next;
}
return current;
}
/**
* 删除数据
*/
public Node delete(long value) {
Node current = first;
Node prev = first;
while (current.data != value) {
if (current.next == null) {
return null;
}
prev = current;
current = current.next;
}
if (current == first) {
first = first.next;
} else {
prev.next = current.next;
}
return current;
}
}
3、测试类
package com.cwq.ch04;
/**
* @author Carpoor
* @date 2019年1月29日
*/
public class TestMyLinkedList {
public static void main(String[] args) {
MyLinkedList list = new MyLinkedList();
list.insertFirst(20);
list.insertFirst(50);
list.insertFirst(30);
list.insertFirst(40);
list.insertFirst(10);
list.display();
Node deleteFirst = list.deleteFirst();
deleteFirst.display();
System.out.println();
list.display();
Node find = list.find(30);
find.display();
System.out.println();
list.delete(30);
list.display();
}
}