1.线性表是一个有限序列,可以为空
2.L是带表头结点单链表,删除首元结点的语句是L->next=L->next->next
3.链表表示线性表的优点是便于插入和删除
4.单链表中,增加一个头结点的目的是为了方便些一操作实现
5.循环链表的主要优点是从表中的任意结点出发都能扫描到整个链表
6.顺序储存的线性表,长度为n,在任何位置上插入和删除的操作都是相等概率的,插入一个元素时平均要移动表中n/2个元素。
因为总元素移动是n(n+1)/2,再乘以1/(n+1),就等于二分之一。
7.n个结点的单链表插入一个新结点,时间复杂度为O(1)。
8.非空的循环单链表head的尾链结点(p所指向)满足p->next==head。
9.长度为n的顺序表的表尾插入一个新元素的时间复杂度是O(1),因为直接插入末尾,不移动元素。
10.①单链表的插入和删除操作无需改变结点的存储位置,只需要修改相关指针即可。
②顺序表一般情况下都需要移动元素,在特殊位置表尾进行操作时不需要移动元素。
11.顺序表和链表各自的特点。
存储分配的方式:
顺序表的存储空间是静态分配的。
链表的存储空间是动态分配的。
存储密度:
顺序表的存储密密度=1
链表的存储密度
存取方式:
顺序表是可以随机存取,也可以顺序存取
链表是顺序存取
插入/删除时移动元素的个数:
顺序表平均需要移动近一半元素
链表不需要移动元素,只需要修改指针
12.单链表中结点p不是链尾结点,若在p之后插入结点s,应该执行s->next=p->next;p-next=s;
13.rear指向非空的带头结点的单循环链表的尾链结点的指针。若想删除链表的第一个数据结点,应该执行s=rear->next->next;rear->next->next=s->next;free(s)
14.双向循环链表结构为(data,prior,next),且不带表头结点。若想在结点p之后插入j结点s应该执行
s->prior=p;s->next=p->next;p->next->prior=s;p->next=s
15.给n个元素的一堆数组,建立一个有序单链表的时间复杂度为O(n的二次方)
16.