对于链表来说 一般我们可以将链表分为单向链表和双向链表
单向链表
单向链表的结构表现为 数据域+指针域
接下来我们引入链表在Java中的表现形式,以便我们去理解单向链表
public class ListNode { //数据域 private int val; //指针域 private ListNode next; public ListNode(int val, ListNode next) { this.val = val; this.next = next; } public ListNode(int val) { this.val = val; } public ListNode() { } }
可以从我们的代码看到,链表是一个连续存储结构,当a1的next指向a2,那么a1就是a2的直接前驱,a2是a1的直接后续,而单向链表只能由前驱节点找到后续节点
双向链表
双向链表的结构表现为 前驱指针域+数据域+后续指针域
双向链表在java当中的表现形式
public class ListNode { //前驱指针域 private ListNode pre; //数据域 private int val; //后续指针域 private ListNode next; public ListNode(ListNode pre,int val, ListNode next) { this.pre=pre; this.val = val; this.next = next; } public ListNode(int val) { this.val = val; } public ListNode() { } }
对比单向链表,双向链表多了一个指针域,这样前驱节点和后续节点就可以互相找到