python数据结构习题汇总

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章数据结构导论

一、选择题

1.算法的时间复杂度取决于 A 。

A.问题的规模 B.变量的多少 C.问题的难度 D.A和B

2. 算法能正确的顺利结束的特性为算法的 B 。

A. 有效性

B.有限性

C.健壮性

D. 高效性

3. 数据的物理结构主要包含 A 这几种结构。

A.顺序结构和链表结构 B.线性结构和非线性结构

C.动态结构和静态结构 D.集合、线性结构、树形结构、图形结构4.数据在计算机内存中的表示是指 A 。

A. 数据的存储结构

B. 数据结构

C. 数据的逻辑结构

D. 数据元素之间的关系

5.数据结构被形式化定义为二元组(D,S),其中D是 B 的有限集合。

A.算法B.数据元素C.数据操作D.数据关系6.算法效率的度量是 D

A.正确度和简明度B.数据复杂度和程序复杂度

C.高的速度和正确度D.时间复杂度和空间复杂度

7. 在存储数据时,通常不仅要存储各数据元素的值,还要存储 D 。

A.数据的存储方法B.数据处理的方法

C.数据元素的类型D.数据元素之间的关系

8. 以下叙述不正确的是 C 。

A. 数据结构是指数据以及数据相互之间的联系

B. 数据结构主要指数据的逻辑结构,与计算机的存储和处理无关

C. 数据的存储结构是指数据在计算机中的存储方式,主要包括线形和非线性

D. 对于给定的n个元素,可以构造出的逻辑结构有多种

9. 下列程序段违反了算法 B 特征。

count=0

while count!=3:

print(count)

A.明确性B.有限性

C.有效性D.功能性

10. 下列程序的时间复杂度为 D 。

for i in range(1,n+1):

j=i

for k in range(j+1,n+1):

x=x+1

A.O(i*j) B.O(n(n-1)/2)

C.O(n2/2) D.O(n2)

二、解答题

1.下列程序段中,函数my_fun(i,k)的执行次数是 n(n+1)/2 ,该程序的时间复杂度为O(n^2) 。

for k in range(1,n+1):

for i in range(0,k):

if i!=k:

my_fun(i,k)

2.求下列程序段中有数字标号的各语句的执行次数,然后求出该程序段的时间复杂度。

def fun (n) :

①i=s=1

②while s

i=i+1

③s=s+i

④return i

答:

① 1次

②(2n)^1/2次

③(2n)^1/2 - 1次

④ 1次

⑤ O(n^1/2)

第2章数组结构

一、选择题

1.线性表是一个 A 。

A. 有限序列,可以为空

B. 有限序列,不能为空

C. 无限序列,可以为空

D. 无限序列,不能为空

2.下面关于线性表的叙述中,错误的是 B 。

A. 线性表采用顺序存储,必须占用一片连续的存储单元

B. 线性表采用顺序存储,便于进行插入和删除操作

C. 线性表采用链接存储,不必占用一片连续的存储单元

D. 线性表采用链接存储,便于进行插入和删除操作

3.某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为 A 。

A. 144

B. 145

C. 147

D. 148

4.若长度为n的顺序存储结构线性表,删除第i个数据元素,需要向前移动 A 个数据元素。

A. n-i

B. n+i

C. n-i-1

D. n-i+1

5.若长度为n的顺序存储结构线性表,在第i个位置插入一个元素,需要依次向后移动 D 个元素。

A. n-i

B. n+i

C. n-i-1

D. n-i+1

6.一个顺序表所占存储空间的大小与 D 无关。

A.顺序表长度 B.结点类型

C.结点中个数据域的类型 D.结点的存放次序

7. 以下叙述不正确的是 D 。

A. 数据的逻辑结构包括线性和非线性结构,非线性结构包括树和图两种。

B. 数据的逻辑结构主要指元素间的关系,与计算机的存储和处理无关

C. 数据的存储结构是指数据在计算机中的存储方式,主要包括顺序和链式两种

D. 对于给定的n个元素,可以构造出的逻辑结构有顺序表和链表两种

8. 某线性表采用顺序存储结构,则下列叙述正确的是 B 。

A.删除顺序表第i个元素和在第i位置插入一个元素所需移动的元素个数一样

B.删除顺序表第i个元素和在第i位置插入一个元素的时间复杂度一样

C.删除顺序表第i个元素和取第i元素的值的时间复杂度一样

D.在顺序表表头插入和表尾插入的时间复杂度一样

9. 对线性表,在下列情况下应当采用顺序表表示的是 A 。

A. 经常需要随机地存取元素

B. 经常需要进行插入和删除操作

C. 表中每个元素需要的字节数比较大

D. 表中的元素个数不变

10.在含有n个元素的顺序表中,算法的时间复杂度是O(1)的操作是___A___。

A.访问第i个元素(1≤i≤n)和求第i个元素的直接前驱(2≤i≤n)

B.在第i个元素后插入一个新元素(1≤i≤n)

C.删除第i个元素(1≤i≤n)

D.将n个元素从小到大排序

二、填空题

1.一个一维数组(列表)A的长度为500,起始(A[0])地址为2000,每个元素占4个字

节,则A[80]的地址是 2320 。

2.一个4*6的二维数组A,每个元素占4个字节,假设该数组起始元素A(1,1)的地址是110,

若以行为主存储,则A(3,5)的地址是 174 ;若以列为主存储,A(3,5)的地址是 182 。

3.以顺序存储结构实现的线性表简称为顺序表,它要求存储空间必须是

连续的,并以下标来体现元素之间的关系,在顺序表中访问第i个元素的时间复杂度为 O(1) ,因此,顺序表也称为随机存取的数据结构。以链式存储结构实现的线性表称为链表。其存储空间可以是不连续的,以指针来体现元素之间的关系。在链表中访问第i个元素的时间复杂度为 O(n) ,因此,链表也称为顺序访问的数据结构。

三、算法设计题

1.设有一个顺序表L,其元素为整型数据,编写一个要求时间复杂度为O(n)、空间复杂度为O(1)的算法,将L中所有小于0的整数放在前半部分,大于0的整数放在后半部分。提示:从L的两端查找,前端找大于0的数据,后端找小于0的数据,然后将两位置的数据交换。

L = [1,2,3,4,5,6,7,8,9,10,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]

n = len(L)

print("原顺序表:\n{}".format(L))

j = 0

k = 0

for i in range(n):

if L[i] < 0:

k = L[i]

相关文档
最新文档