(一)线性表
1.擅长存取任一指定序号的元素+对第一个和最后一个元素插入删除
2.支持随机存取
3.插入和删除元素时,移动元素的个数与该元素的位置有关
4.逻辑上相邻的元素,其物理位置必定相邻
5.插入:1≤i≤n+1,移动n-i+1个元素
6.删除:移动n-i个元素
(二)单链表
1.(❌)将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度O(logN)
🍂数组二分查找的平均复杂度是O(logN),链表的遍历只能是从第一个往后,所以二分查找法不能用于链表结构。
2.设h为不带头结点的单向链表。在h的头上插入一个新结点t
的语句是:t->next=h; h=t;
3.创建一个包括n个结点的有序单链表的时间复杂度是O(n2)
🌰每生成一个新的结点,都要遍历比较之后再插入
(三)循环链表、双向链表、静态链表
1.(❌)在一个设有头指针和尾指针的单链表中,执行删除该单链表中最后一个元素的操作与链表的长度无关
🌰还要遍历一次,找到倒数第二个元素,当成尾指针
2.
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?
A 单链表
B 单循环链表
C 带尾指针的单循环链表
D 带头结点的双循环链表
3.如果对线性表的运算只有2种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用(只有表尾指针没有表头指针的循环单链表):尾指针的下一个就是头指针鸭!