1.将长度为n的单链表连接在长度为m的单链表之后,其算法的计算时间复杂度为O(m+N),因为在一个长度为n的单链表上访问后继结点只是进行一次间接寻址的操作,这个时间是常量,自然是O(1)了,但是通过单链表当前的地址,如果要访问到其前驱,必须要从头开始顺序访问,如果链表的有n个结点,平均时间为O(n),因此时间复杂度就是O(n)了。
2.在带头结点的双向循环链表中插入一个新的结点,需要修改的指针域数量为4个。一般双向链表节点定义 struct node{struct node*prev; struct node *next};插入一个新节点,struct node * newnode; 该新节点的prev要指向前面一个节点,next指向后面一个节点,前面一个节点的next要指向newnode,newnode 后面一二节点的prev要指向newnode,所以要修改4个指针
3.带头结点的单链表的头指针为head,判断链表为空的设置条件
LinkList Init Linklist()
{
LinkList L;
L=(LinkList)malloc(sizeof(LinkNode));
L->next=NULL;
return L;
}
4.循环单链表la中,指针p所指结点为表尾结点的条件p!=NULL && p->next==head
5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上一定相邻,但是在链式结构上不一定相邻
6.线性表其实就是一个带有当前长度length和极限长度maxlength的数组,索引、排序等操作与普通数组完全相同,其逻辑顺序,也就是存储顺序。线性表的逻辑顺序与存储顺序总是一致的
7.线性表分为顺序表和链表。顺序表是以数组的形式来存储的,压根没有前驱和后继的这种叫法。而链表,头结点是没有前驱的,尾结点是没有后继的。