如何构造链表?
链表是一种链式存储的数据结构,
链表节点结构为:
data | next |
链表的结构为:
其中data用来存放数据,next存放指向下一个数据的地址。
public class Node {
public int data;//数据域
public Node next;//指针域
public Node () {};
public Node (int data) {
this.data = data;
}
}
构建一个单链表
单链表构建有两种方法:1.头插法 ; 2.尾插法。
头插法:数据插入到链表的表头。
尾插法:数据插入带链尾。
Node head = new Node();
int a[] = {1,2,3,4,5};
for(int i =0; i < a.length; i++){
Node node = new Node(a[i]);
node.next = head.next;
head.node = head;
}
链表的插入
单链表的插入要考虑三种情况:1.在表头插入 2.在中间插入 3.在表尾插入
1.在表头插入
在表头插入节点时,直接将数据插入到表头,如果链表没有头节点,那么要将head重新指向插入的新数据。
2.在中间插入
在中间插入节点时,首先遍历找到要插入的位置,将数据插入到前驱节点和后继节点之间,但是不能先获取他的前驱节点,如果先获取前驱节点,那么之后的数据就会丢失。每个数据只有一个前驱节点和一个后继节点。
所以先连接插入数据的后继节点
3.在表尾插入
在表尾插入节点,只需要将将表尾节点指向新节点就行了。
链表的删除
链表的删除和插入一样,也分为3种情况,1.删除表头 2.删除中间数据 3.删除表尾
1.删除表头
删除表头元素只需要将头节点指向删除数据的下一个数据,原来的节点就被删除了。
2.删除中间
首先遍历找到删除元素的位置,找到删除数据的前驱节点和后继节点,直接将删除数据的前一个数据指向删除数据的后一个数据。
3.删除表尾
找到表尾的前一个数据,将这个数据的下一个指向null值,表尾数据就删除了