从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较()个元素结点。

题目
单选题
从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较()个元素结点。
A

n/2

B

n

C

(n+1)/2

D

(n-1)/2

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在一个长度为n(n>1)的带头结点的单链表head上,另设有尾指针r(指向尾结点),执行()操作与链表的长度有关。

A.删除单链表中的第一个元素

B.删除单链表中的尾结点

C.在单链表的第一个元素前插入一个新结点

D.在单链表的最后一个元素后插入一个新结点


参考答案:B

第2题:

从一个具有n个结点的单链表中查找值为x的结点时,在查找成功的情况下,需平均比较(45)个结点。

A.n

B.n/2

C.(n-1)/2

D.(n+1)/2


正确答案:D

第3题:

在具有n个结点的单链表上查找值为y的元素时,其时间复杂度为()。

A、O(n)

B、O(1)

C、O(n2)

D、O(n-1)


参考答案:A

第4题:

在一个n个结点的单链表中查找某个元素,若查找成功,则平均比较次数为( )。

A.n

B.n/2

C.(n-1)/2

D.(n+1)/2


正确答案:D
解析:对单链表结构的查找,每次比较都必须从头结点开始,因此最好情况为比较一次得到查找的元素,最坏情况为比较到最后一个结点需要n次才找到,平均比较次数为 (1+2+3+...+n)/n次, 即为(n+1)/2次。

第5题:

从具有n个结点的二叉查找树中查找一个元素时,在最坏情况下进行成功查找的时间复杂度为(51)。

A.O(n)

B.O(1)

C.O(log2n)

D.O(n2)


正确答案:A
解析:当二叉查找树严重不平衡时,二叉查找树有n层,最坏情况就是把n个结点都比较一遍才查找成功。

第6题:

从一个具有n个结点的单链表中查找其值等于k的结点时,在查找成功的情况下,需平均比较 ______个结点。

A.n

B.n/2

C.(n-1)/2

D.(n+1)/2


正确答案:D
解析:在n个结点的单链表中,查找第i个结点需要比较关键词的次数是i,所以,在查找成功的情况下,需平均比较的结点个数为(1+2+…+n)/n,即(n+1)/2。

第7题:

对于二叉查找树(Binary Search Tree),若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值。左、右子树本身就是两棵二叉查找树。因此,对任意一棵二叉查找树进行(61)遍历可以得到一个结点元素的递增序列。在具有n个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为(62)。

A.先序

B.中序

C.后序

D.层序


正确答案:B

第8题:

在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。

A.求链表的第i个结点

B.在地址为P的结点之后插入一个结点

C.删除表头结点

D.删除地址为P的结点的后继结点


正确答案:A

第9题:

在具有101个元素的顺序表中查找值为x的元素结点时,平均比较元素的次数为()。

A.50

B.51

C.100

D.101


正确答案:B

第10题:

阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e) 的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。 例如,某含头结点单链表 L 如图 4-1 (a) 所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。图4-1

define SUCCESS 0 define ERROR -1 typedef int Status; typedef int ElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node ,*LinkList; 【C 代码】 LinkList GetListElemPtr(LinkList L ,int i) { /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点: 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if (i<1 ∣∣ !L ∣∣ !L->next) return NULL; k = 1; P = L->next; / *令p指向第1个元素所在结点*/ while (p && (1) ) { /*查找第i个元素所在结点*/ (2) ; ++k; } return p; } Status DelListElem(LinkList L ,int i ,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令p指向第i个元素的前驱结点*/ if (i==1) (3) ; else p = GetListElemPtr(L ,i-1); if (!p ∣∣ !p->next) return ERROR; /*不存在第i个元素*/ q = (4) ; /*令q指向待删除的结点*/ p->next = q->next; /*从链表中删除结点*/ (5) ; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


正确答案:(1) k<i
(2) p = p->next
(3) p=L
(4) p->next
(5) *e = q->data

更多相关问题