内容正文:
数组和链表专项习题 1、 选择题 1. 在一个长度为n的数组中的第i个元素(1<=i<=n)之前插入一个新元素时,需向后移动的元素个数为( ) A.i B.n-i C.n-i+1 D.n-i-1 2.在单向链表中,增加头指针的目的是( ) A.标识表节点中首节点的位置 B.算法实现上的方便 C.使单向链表至少有一个节点 D.说明单向链表是线性表的链式存储实现 3.在一个包含n(n>1)个节点的单链表上,没有头和尾两个指针,下列操作需要遍历多个节点的是( ) A.删除该链表中的第一个节点 B.删除该链表中的最后一个节点 C.在该链表第一个节点前插入一个新节点 D.在该链表最后一个节点后插入一个新节点 4.某python程序段如下: a=[28,29,79,14,24,43] m=int(input(“请输入一个整数:”)) pos=-1 for i in range(len(a)): if a[i]>m: if pos==-1 or a[i]<a[pos]: pos=i 运行该程序段,若输入40,变量pos的值是( ) A.-1 B.2 C.3 D.5 5.有下列python程序段: a=[3,7,8,2,19,10,16,12] n=len(a) for i in range(2): k=i for j in range(i+1,n): if a[k]<a[j]: k=j if i!=k: a[i],a[k]=a[k],a[i] 下列说法正确的是( ) A. 程序段执行后,数组a中的元素为[19,16,8,2,3,10,7,12] B. 程序段执行后,数组a中的元素为[3,2,8,7,19,10,16,12] C. 程序段执行后,变量k的值为7 D. 程序段执行后,数组a中数据元素发生位置变化的有2个 6.有如下python程序段: a=[[7,1],[8,2],[9,-1],[6,0]] head=3 head=a[head][1] 则程序执行后,链表a有几个节点( ) A.1 B.2 C.3 D.4 7.有如下python程序段: r=0 for e in a: if e%3!=0: a[r]=e r+=1 del a[r:] 已知a的初始值为[9,1,2,3,3,5,3,3,4,6],则执行上述代码段后,a的值为( ) A.[9,1,2,3,3,5,3,3,4,6] B.[1,2,5,4] C.[9,3,3,3,3,6] D.[9,1,2,5,4,6] 8.有如下python程序段: for i in range(1,1001): flag=True for j in range(3): if i%a[2*j]!=a[2*j+1]: flag=False if flag: ans=i break 已知列表a=[3,1,5,1,7,3],该段程序执行后,变量ans的值为( ) A.31 B.41 C.136 D.137 9.有如下Python程序段: def rotate(a,r): right_len=len(a)-r for i in range(r-1,-1,-1): temp=a[i] for j in range(i+1,i+right_len+1): a[j-1]=a[j] a[i+right_len]=temp return a 则当执行语句print(rotate([1,2,3,4,5,6,7,8],3))时,程序输出值为 ( ) A.[1,2,3] B.[4,5,6,7,8] C.[1,2,3,4,5,6,7,8] D.[4,5,6,7,8,1,2,3] 10.有如下python程序段: n=6 a=[[0]*n for i in range(n)] for i in range(n): for j in range(i+1): if j==0 or j==i: a[i][j]=1 else: a[i][j]=a[i-1][j-1]+a[i-1][j] 则程序执行后a[4]的值为( ) A.[1,3,3,1] B.[1,4,6,4,1] C.[1,4,6,4,1,0] D.[1,5,10,10,5,1] 11.有如下python程序段: a=[[1,1],[2,2],[3,3],[4,-1]] head=0 cur=a[head][1] a[head][1]=-1 while cur!=-1: next_=a[cur][1] a[cur][1]=head head,cur=cur,next_ 则程序执行后,a的值为( ) A.[[1,1],[2,2],[3,3],[4,-1]] B.[[1,-1],[2,0],[3,1],[4,2]] C.[[4,1],[3,2],[2,3],[1,-1]] D.[[4