若希望以O(1)的时间复杂度找到当前结点的前驱,则链表最好采用()。
A.单链表
B.单循环链表
C.双向链表
D.以上均可
第1题:
● 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是 (60) 。
(60)A. 若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)
B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理
C. 加入头结点后,代表链表的头指针不因为链表为空而改变
D. 加入头结点后,在链表中进行查找运算的时间复杂度为O(1)
正确答案:D
试题(60)分析
本题考查数据结构基础知识。
含有头结点的单链表如下图所示
在链表中加入头结点后,查找表中某一元素仍然要从头指针出发,顺序找到目标元素或失败时找到表尾为止,时间复杂度与表长成正比。
第2题:
单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是( )。
A.若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)
B.在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理
C.加入头结点后,代表链表的头指针不因为链表为空而改变
D.加入头结点后,在链表中进行查找运算的时问复杂度为O(1)
第3题:
A、O(n)
B、O(1)
C、O(n2)
D、O(n-1)
第4题:
A.插入一个结点使之有序的算法的时间复杂度为O(1)
B.删除最大值结点使之有序的算法的时间复杂度为O(1)
C.找最小值结点的算法的时间复杂度为O(1)
D.以上都不对
第5题:
● 有n个结点的有序单链表中插入一个新结点并保持有序的运算的时间复杂度为( )。
A. O(1)
B. O(logn)
C. O(n)
D. O(n2)
第6题:
第7题:
求循环链表中当前结点的后继和前驱的时间复杂度分别是()。
第8题:
在单链表中,若给定某个结点的指针,要删除该结点的后继结点的时间复杂度为()。
第9题:
数据结构里,单链表中删除p指针指向结点的后继(假设存在)的时间复杂度是()。
第10题:
在单链表、双链表和单循环表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?
第11题:
第12题:
第13题:
●在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是 (53) 。
(53) A.O(1)
B.O(n)
C.O(nlogn)
D.O(n2)
【解析】本题主要考核有序单链表上的插入操作及算法分析。对数据结构的任何操作都不能改变其原有的结构特性。因此,在有序单链表中插入一个新结点后,仍然要保持它的有序性。
插入操作的关键是查找插入位置,主要时间也是花在插入位置的查找上。n个结点的单链表,有,n+1个可能插入的位置,即第一个结点之前和每一个结点之后。在第一个结点之前插入,需比较一次;在第一个结点之后插入需比较两次;…;在第,n个结点之后插入需查找次。如果在每一个位置上作插入的概率相等,即 ,则在有序单链表上查找插入位置的平均比较次数为:
第14题:
A.O(1)
B、O(n)
C、O(n2)
D、O(nlog2n)
第15题:
A、O(1)
B、O(n)
C、O(n的平方)
D、O(log2n)
第16题:
在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是(53)。
A.O(1)
B.O(n)
C.O(nlogn)
D.O(n2)
第17题:
在单项链表中删除一个指定结点的后继的时间复杂度为 ______。
A.O(n)
B.O(nlog2n)
C.O(1)
D.
第18题:
在n个结点的单链表中要删除已知结点*p,需找到它的(),其时间复杂度为()。
第19题:
在单链表中,若给定某个结点的数据信息,要删除该结点的后继结点的时间复杂度为()。
第20题:
在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()。
第21题:
单链表中删除p指针指向结点的后继(假设存在)的时间复杂度是()。
第22题:
在一个单链表中,若要在p所指向的结点之前插入一个新结点,则此算法的时间复杂度的量级为()。
第23题:
O(n)和O(1)
O(1)和O(1)
O(1)和O(n)
O(n)和O(n)
第24题: