从LeetCode上的链表基础知识学习,进行总结如下:
1.单链表介绍
单链表与数组不同,数组中只存储元素的值,而单链表中除了数据的值外还包括了指向下一个节点的引用字段通常以next来表示。如下图表示,通过这个引用,单链表将所有节点按照顺序组织起来。
通常单链表如下定义:
// Definition for singly-linked list.
struct SinglyListNode {
int val;
SinglyListNode *next;
SinglyListNode(int x) : val(x), next(NULL) {}
};
与数组区别,我们无法随机访问链表中的元素,但如果我们想要获得第i个元素就需要从头指针开始遍历。平均时间复杂度为O(N)。
2.链表添加
链表添加又分为在中间添加、在头部添加以及在尾部添加,首先是头部添加:
头结点是整个链表的代表因此在头部进行添加节点时最重要的是添加后更新head:
- 初始化一个cur;
- 将该结点连接到head上;
- 将cur指定为head.