当前位置:文档之家› python数据结构习题汇总

python数据结构习题汇总

python数据结构习题汇总
python数据结构习题汇总

第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]

L[i] = L[j]

L[j] = k

j += 1

else:

continue

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

2. 在一个有序列表中查找元素x,当被查元素x小于列表中某个元素时就可停止。请编写一个函数实现上述查找,并分析此查找在最好情况、最坏情况以及平均情况下的性能。

def found(L,x):

print("查找元素")

for i in L:

if x > i or x == i:

print("元素x大于或等于{},程序继续".format(i))

continue

else:

print("元素x小于{},程序停止".format(i))

break

if __name__ == "__main__":

x = eval(input("请输入要查找的元素x:"))

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

found(L,x)

3. 已知一个n*n的二维数组a已经以行为主存放在一个大小为n2的一维数组b中,编写一个函数计算此二维数组的主对角线元素之和。count(b,n)

def count(b,n):

x=0

i=0

while True:

x += b[i]

i += n+1

if i > len(b):

break

print("主对角线元素之和为:%d"%x)

if __name__ == "__main__":

a = [[1,2,3],[4,5,6],[7,8,9]]

b = []

n = len(a)

print("二维数组A为:")

for i in range(n):

for j in range(n):

b.append(a[i][j])

print("%d"%a[i][j],end='\t')

print()

print("存放在一维数组b中为:")

print(b)

count(b,n)

4. 有一值为整型、长度为n的顺序表(列表),写一个函数,计算该顺序表所有元素的平均值,并输出所有大于平均值的元素。

def Average(L,n):

nsum = 0

for i in range(n):

nsum += L[i]

average = nsum / n

print("平均数为:%d"%average)

print("所有大于平均值的元素为:")

for i in L:

if i > average:

print(i,end=' ')

else:

continue

if __name__ == "__main__":

L = [1,354,56,57,2,8,9,46,767,678]

n = len(L)

Average(L,n)

第3章链表

一、选择题

1.以下关于链式存储结构的叙述中, C 是不正确的。

A.结点除自身信息外还包括指针域,因此空间利用率小于顺序存储结构

B.逻辑上相邻的结点物理上不必邻接

C.可以通过计算直接确定第i个结点的存储地址

D.插入、删除运算操作方便,不必移动结点

2. 在下列存储结构中,最适合实现在线性表中进行随机访问的是 A 。

A. 数组

B. 双向链表

C. 单向链表

D. 循环链表

相关主题
文本预览
相关文档 最新文档