查找要插入的位置 是线性级
插入操作是 是常量级
线性级+常量级
结果还是线性级
A选项 一般 带有头结点的链表 删除第一个结点 是删除数据结点(开始结点)
因为头结点 一般不动 它是链表存在的标记
但是不管这句话 理解成删除数据结点还是删除头结点 都与链表长度无关
B选项 需要找到尾结点前面的结点 把它的next指针置为NULL
把r指向新的尾结点
因此 需要从头到尾 扫描链表 和链表长度有关
考点 只能在已知结点之后插入或删除结点
因为每个结点中只保存了后继结点的位置信息 next指针指出
前驱结点信息不知道
结点没有名字 我们一般把指向它指针变量的名字 作为结点的名字
选A
改变顺序表的长度
delta 是我们要删除的元素个数
等于 j - i + 1
图中是3~5是要删除元素的下标
5-3+1 = 3 个
循环从最后一个要删除的元素后面开始(j+1)
将后面的挪到前面
删除重复的函数
LNode *p = L->next
带有头结点的单链表 , p 指向开始结点
判断语句 p->next ! =NULL
删除结点 要知道被删除结点的前驱
所以定义的p 始终指向被删除结点的前驱
创建单链表
打印
测试
测试结果
注意循环条件 p始终指向 要摘出结点的 前驱结点
因为要从A链表中摘出结点
这个操作 和删除很像 就是没有free()
网友评论