线性表是数据结构中最简单、最基本和最重要的结构形式之一,前来总结一下,先上思维导图:
主要是线性表的两种存储结构,分别形成了顺序表和链表,这两种存储结构各有其优缺点,不再重复介绍,下面详细介绍少这两种存储结构下的常用操作及其算法的时间复杂度。
顺序表(长度为n)
操作 |
时间复杂度 |
第i个位置插入新数据元素item |
O(n) |
删除第i个位置元素 |
O(n) |
确定元素item在线性表中的位置 |
O(n) |
删除表中重复出现的元素 |
O(n^2) |
对表中元素排序 |
O(n^2) |
链表:
操作 |
时间复杂度 |
建立一个线性链表 |
O(n) |
求链表的长度 |
O(n) |
判断链表是否为空 |
O(1) |
确定元素item在线性链表中的位置 |
O(n) |
非空链表第1个链结点前插入item |
O(1) |
非空链表末尾插入item |
O(n) |
由具体指针p所指链节点后插入item |
O(1) |
按值有序链接的表中插入item |
O(n) |
删除链表中值为item的所有链结点 |
O(n) |
连接两个非空链表(连接到长度为n的后面) |
O(n) |
复制一个线性链表 |
O(n) |