判断题
1-1
T
1-2
T
1-3
An algorithm may or may not require input, but each algorithm is expected to produce at least one result as the output.
T
1-4
T
1-5
F
1-6
F
1-7
T
算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
1-8
T
对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
1-9
T
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。
1-10
F
对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。
1-11
F
对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。
1-12
F
队列是后进先出的线性表。
1-13
F
在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
1-14
F
将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)
1-15
F
若用链表来表示一个线性表,则表中元素的地址一定是连续的。
1-16
F
链表中逻辑上相邻的元素,其物理位置也一定相邻。
1-17
F
链表中逻辑上相邻的元素,其物理位置也一定相邻。
选择题
2-1
在数据结构中,从逻辑上可以把数据结构分成( 线性结构和非线性结构 )
2-2
与数据元素本身的形式、内容、相对位置、个数无关的是数据的( 逻辑结构 )
2-3
通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( 不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 )
2-4
以下数据结构中,( 树)是非线性数据结构。
2-5
求整数n(n>=0)的阶乘的算法如下,其时间复杂度为( O(n))。
2-6
流程图是描述算法的很好的工具,一般的流程图中由几种基本图形组成。其中判断框的图形是(菱形)
2-7
For the following function (where n>0)
the most accurate time complexity bound is: O ( log n )
2-8
For the following function (where n>0)
the most accurate time complexity bound is:O ( log n )
2-9
Suppose A is an array of length N with some random numbers. What is the time complexity of the following program in the worst case?
O(N)
2-10
在N个结点的顺序表中,算法的时间复杂度为O(1)的操作是:(访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N) )
2-11
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间? 顺序表
2-12
For a sequentially stored linear list of length N, the time complexities for query and insertion are:
O(1), O(N)
2-13
If the most commonly used operations are to visit a random position and to insert and delete the last element in a linear list, then which of the following data structures is the most efficient?
sequential list
2-14
顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( 108 )
2-15
已知二维数组 A 按行优先方式存储,每个元素占用 1 个存储单元。若元素 A[0][0] 的存储地址是 100,A[3][3] 的存储地址是 220,则元素 A[5][5] 的存储地址是:( 300 )
2-16
线性表若采用链式存储结构时,要求内存中可用存储单元的地址( 连续或不连续都可以 )
2-17
在具有N个结点的单链表中,实现下列哪个操作,其算法的时间复杂度是O(N)?
遍历链表和求链表的第i个结点
2-18
将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?
带尾指针的单循环链表
2-19
线性表L在什么情况下适用于使用链式结构实现?
需要不断对L进行删除插入
2-20
对于一个具有N个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂度为O(N)
2-21
链表不具有的特点是:( 方便随机访问任一元素 )
2-22
设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:( t->next=h; h=t; )
2-23
在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行( s->next=p->next; p->next=s; )
2-24
带头结点的单链表h为空的判定条件是:( h->next == NULL; )
2-25
对于一非空的循环单链表,h和p分别指向链表的头、尾结点,则有:( p->next == h )
2-26
在双向循环链表结点p之后插入s的语句是:( s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; )
2-27
在双向链表存储结构中,删除p所指的结点,相应语句为:( p->prior->next=p->next; p->next->prior=p->prior; )
2-28
将两个结点数都为N且都从小到大有序的单向链表合并成一个从小到大有序的单向链表,那么可能的最少比较次数是:N
2-29
To insert s after p in a doubly linked circular list, we must do:
s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;
2-30
To delete p from a doubly linked list, we must do:
p->prior->next=p->next; p->next->prior=p->prior;
2-31
已知表头元素为c的单链表在内存中的存储状态如下表所示:
现将f存放于1014H处,并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次
是:1014H, 1004H, 1010H
2-32
For a non-empty doubly linked circular list, with h and t pointing to its head and tail nodes, respectively, the FALSE statement is:
h->next == t
2-33
For a non-empty doubly linked circular list, with h and t pointing to its head and tail nodes, respectively, the TRUE statement is:
t->next == h
2-34
Suppose A is an array of length N with some random numbers. What is the time complexity of the following program in the worst case?
O(N)
多选题
3-1
非空线性表具有哪些结构特征?
只有唯一的开始结点和唯一的终端结点;
除开始结点外,每个结点只有一个前驱结点;
除终端结点外,每个结点只有一个后继结点
3-2
在包含 n 个数据元素的链表中,
(访问第 i 个数据元素;访问第 i 个数据元素;删除第 i (1≤i≤n) 个结点;)
的时间复杂度为 O(n)。
填空题
设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句:
py->next=px->next ;
px->next=py ;
程序填空题
下列代码的功能是返回带头结点的单链表L的逆转链表。
List Reverse(List L)
{
Position Old_head, New_head, Temp;
New_head = NULL;
Old_head = L->Next;
while (Old_head) {
Temp = Old_head->Next;
@@ Old_head->Next = New_head @@;
New_head = Old_head;
Old_head = Temp;
}
@@ L->Next = New_head @@;
New_head = Old_head;
Old_head = Temp;
}