题目
单项选择题
ADTs_5_Lecture_Content Following is a lecture content question. Given a singly linked list with only a reference to the head node, what is the asymptotically tight worst-case runtime complexity for searching for a specific node within the list?
选项
A.O(n2)
B.O(logn)
C.O(1)
D.O(n)
查看解析
标准答案
Please login to view
思路分析
In a singly linked list that only provides access to the head, searching for a particular node generally requires inspecting each node until the target is found or the end is reached. This baseline understanding informs the complexity.
Option 2: O(n^2). This would imply that for each element we perform a linear ope......Login to view full explanation登录即可查看完整答案
我们收录了全球超50000道考试原题与详细解析,现在登录,立即获得答案。
类似问题
The following declarations are exactly the same as the ones used in the file lists.h that was discussed in class. typedef struct node node_t; struct node { data_t data; node_t *next; }; typedef struct { node_t *head; node_t *foot; } list_t; A student wrote the following function to remove every second item from a list, keeping the first, third, fifth (and so on) original items, and deleting and freeing the second, fourth, sixth (and so on) original items. But four of the student's assignment statements have been lost. list_t *drop_half(list_t *list) { node_t *curr, *fllw; // line A while (curr && curr->next) { list->foot = curr; // line B // line C free(fllw); fllw = NULL; // line D } if (curr) { list->foot = curr; } return list; } Match the line locations on the left with the correct assignment statements on the right. 1: Line A contains: 2: Line B contains: 3: Line C contains: 4: Line D contains:
In a doubly linked list, each node contains:
The following declarations are exactly the same as the ones used in the file lists.h that was discussed in class. typedef struct node node_t; struct node { data_t data; node_t *next; }; typedef struct { node_t *head; node_t *foot; } list_t; A student wrote the following function to walk through lists, swapping each adjacent pair of "even position, odd position" elements so that the first element in each pair switches to the odd position, and the second element in each pair switches to the even position. The first item in the list is counted as being position zero, which is even. None of the data items are moved, and the pairwise swaps are accomplished by pointer assignments. For example, if the original list was 10->16->15->18->17->20->19, the list returned from the function would be linked together in the order 16->10->18->15->20->17->19. In an odd-length list the last item stays in the final position. But four of the student's assignment statements have been lost, marked by four lines with comments and labels. list_t *rearrange(list_t *list) { node_t *prev, *curr, *then, *aftr; // --------------> line A curr = list->head; while (curr && curr->next) { // two more nodes exist then = curr->next; // --------------> line B // now rearrange the pointers if (prev) { prev->next = then; } else { list->head = then; } then->next = curr; curr->next = aftr // then step forwards to the following pair prev = curr; // --------------> line C } if (!curr) { // there was an even number of nodes, so // need to adjust the foot pointer too // --------------> line D } return list; } Match the line locations on the left with the correct assignment statements on the right. 1: Line A contains: 2: Line B contains: 3: Line C contains: 4: Line D contains:
The following declarations are exactly the same as the ones used in the file lists.h that was discussed in class. typedef struct node node_t; struct node { data_t data; node_t *next; }; typedef struct { node_t *head; node_t *foot; } list_t; A student wrote the following function to reverse the nodes in a list by reassigning all the pointers, so that the node (and data item) that used to be at the head of the list is now at the foot, and the node (and data item) that used to be at the foot of the list is now at the head. But four of the student's assignment statements have been lost. list_t *reverse(list_t *list) { node_t *curr, *prev, *next; assert(list); prev = NULL; curr = list->head; while (curr) { // line A // line B // line C curr = next; } list->foot = list->head; // line D return list; } Match the line locations on the left with the correct assignment statements on the right. 1: line A 2: line B 3: line C 4: line D
更多留学生实用工具
希望你的学习变得更简单
加入我们,立即解锁 海量真题 与 独家解析,让复习快人一步!