前言
最近准备春招,数据结构和算法是短板,决定下功夫恶补。
链表能够实现数据的链式存储,可以做大量的数据插入删除,不用指定内存的大小。
目录
- 结构
- 头结点
- 头部插入数据
- 头部删除数据
- 遍历数据
结构
class List {
//数据
private int data;
//储存指向下一节点的指针
private List next;
//构造方法,对象初始化
public List(int data) {
this.data = data;
}
//取数据
public int getData() {
return data;
}
}
头结点
- 当链表为空时,头结点 first 为 null
- 在头部插入数据时,将first指向新结点
头部插入数据
//头部插入节点
public void insertFirst(int data) {
List listNode = new List(data);
listNode.next = first;
first = listNode;
}
头部删除数据
//删除节点
public void deleteFirst() {
first=first.next;
}
遍历数据
//遍历节点
public void displayAll() {
if (isEmpty()) {
System.out.println("空链表");
} else {
for (List node = first; node != null; node = node.next) {
System.out.println(node.getData());
}
}
}
完整代码 (可以直接运行)
// 单链表
// author Ethan
//
public class LinkList {
// 头结点
public List first;
public LinkList() {
first = null;
}
public static void main(String[] args) {
LinkList linkList = new LinkList();
linkList.insertFirst(1);
linkList.insertFirst(3);
linkList.insertFirst(5);
linkList.insertFirst(10);
linkList.insertFirst(23);
linkList.insertFirst(35);
linkList.displayAll();
System.out.println("/");
linkList.deleteFirst();
linkList.displayAll();
}
public boolean isEmpty() {
if (first == null) {
return true;
} else
return false;
}
//头部插入节点
public void insertFirst(int data) {
List listNode = new List(data);
listNode.next = first;
first = listNode;
}
//删除节点
public void deleteFirst() {
first=first.next;
}
//遍历节点
public void displayAll() {
if (isEmpty()) {
System.out.println("空链表");
} else {
for (List node = first; node != null; node = node.next) {
System.out.println(node.getData());
}
}
}
class List {
private int data;
private List next;
public List(int data) {
this.data = data;
}
public int getData() {
return data;
}
}
}