数据结构1800刷题?错题集
序号标题为解答,引用为题目和答案
- 带尾指针的单向链表:插入可以,但是删除无法完成,因为p需要前移,但是单向链表无法得到前一个节点。
带尾指针的双向链表:插入和删除都很简单。
带尾指针的单向循环链表:插入很简单,删除则需要遍历整个链表,比较费时。
带头指针的双向循环链表:插入和删除都很简单。
设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。
A. 单链表B.单循环链表C. 带尾指针的单循环链表D. 带头结点的双循环链表
- 不要当作是 顺序表的指针
静态链表中指针表示的是( C ). 【北京理工大学2001 六、2(2 分)】
A. 内存地址B.数组下标C.下一元素地址D.左、右孩子地址
- 此解由牛客网 用户给出
链接:https://www.nowcoder.com/questionTerminal/3c514e7b897440fcb8dccbd116b1bddc
来源:牛客网
如上图所示,即题干中的步骤,而rlink表示右结点的意思,llink表示左结点。
步骤一 rlink(p)<- q:表示将p的右结点指向q,即圆圈1;
步骤二 llink§<-llink(q): 表示将p的左结点指向q的左结点,即原来q指向的便是矩形图形这个,所以,现在p所指的就是矩形图形,即圆圈2;
步骤三 llink(q)->p :表示q的左结点指向p,即圆圈3,而在此时,你会发现虚线的2’已经没用了(断了)
步骤四 现在所要做的便是将矩形图片的指向p ,但是虚线2‘的已经断了,所以只能是
rlink(llink(p))<-p;而此时虚线1’也断了。
21.在非空双向循环链表中q 所指的结点前插入一个由p 所指的链结点的过程依次为:
rlink§ ← q; llink§ ← llink(q); llink(q) ← p; ( B)
A. rlink(q) ← p B. rlink(llink(q)) ← p C.rlink(llink§) ← p D .rlink(rlink§) ← p
- 链表头的主要作用,并不是所谓的标识,而要使链表的操来作更加容易,操作方式更加统一。
链表中的头结点仅起到标识的作用。( x )
- 线性表可以是有序的,也可以是无序的
集合与线性表的区别是是否允许元素重复
集合不允许元素重复,线性表允许元素重复
集合与线性表的区别在于是否按关键字排序。( x )
- 1/n(0) + 1/n(1) + 1/n(2) + …+ 1/n(n -1) = 1/n * (n-/2) * (1 + n - 1)
线性表L= ( a1,a2,⋯ ,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个
元素平均需要移动元素的个数是 (n - 1)/ 2
根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成 单链表和多重链表;而又根据指针的连接方式, 链表又可分成动态链表和静态链表