顺序表VS链表
顺序表和链表是线性表的两个分类,其中,逻辑顺序和物理顺序相同为顺序表,不同为链表。下面从以下方面对比一下两者的异同点。
顺序表 | 单链表 | |
---|---|---|
存取方式 | 顺序存取和随机存取 | 顺序存取,通过相邻表示逻辑关系 |
逻辑结构和物理结构 | 逻辑和物理都相邻 | 逻辑相邻,物理不一定相邻,通过指针表示逻辑关系 |
基本操作 | (1)插入、删除:顺序表需要移动大量的元素,其时间复杂度为O(n) 。(2)查找:按值查找顺序表(无序)的时间复杂度为O(n);按序号查找时顺序表的时间复杂度为O(1) | (1)插入、删除:单链表在节点指针已知的时候,时间复杂度为O(1),在节点指针未知的时候,时间复杂度为O(n),不管是哪种,在操作时只需要修改指针而已。(2)查找:按值查找中单链表的时间复杂度为O(n);按序号查找时,单链表的时间复杂度为O(n) |
内存空间 | 无论是静态分配还是非静态分配都需要预先分配合适的内存空间 | 在需要时候进行分配结点空间即可,高效方便,但要使用额外的空间存放指针 |
通过以上对比,我们可以知道在什么情况下该选择顺序表,什么情况下该时候单链表。具体罗列如下: