【数据结构】数据结构练习题1——绪论+线性表

一、选择题

1.下面关于算法说法错误的是(D)
A 算法最终必须由计算机程序实现
B 为解决某问题的算法同为该问题编写的程序含义是相同的
C 算法的可行性是指指令不能有二义性
D 以上几个都是错误的

2.下面程序段的时间复杂性的量级为(D)

for(i=1;i<=n; i++)
  for(j=1;j<=m; j++){
    
    
   c[i][j]=0;
  for(k=1;k<=w;k++)
    c[i][j]+=a[i][k]*b[k][j]
     }

A O(i*j*k)
B O(n*m*k)
C O(n*j*k)
D O(n*m*w)

3.下面算法的时间复杂度为(B)

int f( unsigned int n ) {
    
    
    if ( n==0 || n==1 ) return 1;  
    else return n*f(n-1);
}

A O(1)
B O(n)
C O(n^2)
D O(n!)

4.执行下面程序段时,执行S语句的次数为(D)

for(int i=1; i<=n; i++)
   for(int j=1; j<=i; j++)
      S;

A n^2
B n^2/2
C n(n+1)
D n(n+1)/2

5.下面程序段的时间复杂度为(C)

for(int i=0; i<m; i++)
   for(int j=0; j<n; j++)
      a[i][j]=i*j;

A O(m^2)
B O(n^2)
C O(m*n)
D O(m+n)

6.计算机算法指的是(C),它必须具备输入、输出和确定性、有穷性和稳定性等5个特性。
A 计算方法
B 排序方法
C 解决问题的有限运算序列
D 调度方法

7.数据结构是一门研究非数值计算的程序设计问题中计算机的 (A)以及它们之间的关系和运算等的学科。
A 数据元素
B 计算方法
C 逻辑存储
D 数据映象

8.数据结构被形式地定义为(K,R),其中K是 (B)的有限集,R是K上的映像有限集。
A 算法
B 数据元素
C 数据操作
D 逻辑结构

9.在数据结构中,从逻辑上可以把数据结构分成(C)
A 动态结构和静态结构
B 紧凑结构和非紧凑结构
C 线性结构和非线性结构
D 内部结构和外部结构

10.算法分析的目的是(C),算法分析的两个主要方面是空间复杂度和时间复杂度。
A 找出数据结构的合理性
B 研究算法中的输入和输出的关系
C 分析算法的效率以求改进
D 分析算法的易懂性和文档性

11.将两个各有n个元素的有序表归并成一个有序表,在最坏的情况下,其比较次数是 (A)
A 2n-1
B n
C n+1
D n-1

12.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行(C)
A s->next=p->next; p->next=s;
B p->next=s->next; s->next=p;
C q->next=s; s->next=p;
D p->next=s; s->next=q;

13.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行 (B)
A s->next=p; p->next=s;
B s->next=p->next; p->next=s;
C s->next=p->next; p=s;
D p->next=s; s->next=p;

14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较多少个结点。 (D)
A n;
B n/2;
C (n-1)/2;
D (n+1)/2;

15.顺序存储结构是一种怎样的存储结构。 (A)
A 随机存取
B 索引存取
C 顺序存取
D 散列存取

16.非空的循环单链表head的尾结点(由p所指向)满足 (C)
A p->next= =NULL
B p= =NULL
C p->next= =head
D p= =head

17.在一个单链表中,若删除p所指结点的后续结点,则执行 (A)
A p->next= p->next->next;
B p= p->next; p->next= p->next->next;
C p->next= p->next;
D p= p->next->next;

18.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行 (B)
A HL = p; p->next = HL;
B p->next = HL; HL = p;
C p->next = HL; p = HL;
D p->next = HL->next; HL->next = p;

19.一个带头结点head的循环单链表为空的判断条件是(C)
A head==NULL
B head->next==NULL
C head->next==head
D head!=NULL

20.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行(C)
A p = q->next ; p->next = q->next;
B p = q->next ; q->next = p;
C p = q->next ; q->next = p->next;
D q->next = q->next->next; q->next = q;

21.线性表采用链式存储时,其地址 (D)
A 必须是连续的;
B 部分地址必须是连续的;
C 一定是不连续的;
D 连续与否均可以。

22.用链表表示线性表的优点是 (C)
A 便于随机存取
B 花费的存储空间较顺序存储少
C 便于插入和删除
D 数据元素的物理顺序与逻辑顺序相同

23.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的多少个元素。 (A)
A n/2
B (n+1)/2
C (n-1)/2
D n

24.带头结点的单链表head为空的判定条件是(B)
A head = = NULL;
B head->next = = NULL;
C head->next = = head;
D head! = NULL;

25.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用什么存储方式最节省运算时间。(B)
A 单链表
B 顺序表
C 双链表
D 单循环链表

26.不带头结点的单链表head为空的判定条件是(A)
A head = = NULL;
B head->next = = NULL;
C head->next = = head;
D head! = NULL;

27.单链表中,增加一个头结点的目的是为了 (C)
A 使单链表至少有一个结点
B 标识表结点中首结点的位置
C 方便运算的实现
D 说明单链表是线性表的链式存储

28.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间。(D)
A 单链表
B 仅有头指针的单循环链表
C 双链表
D 仅有尾指针的单循环链表

29.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用什么存储方式最节省运算时间。 (D)
A 单链表
B 双链表
C 单循环链表
D 带头结点的双循环链表

30.循环链表的主要优点是(D)
A 不再需要头指针了
B 已知某个结点的位置后,能够容易找到他的直接前趋
C 在进行插入、删除运算时,能更好的保证链表不断开
D 从表中的任意结点出发都能扫描到整个链表

二、判断题

1.【正确】线性结构,是一种一对一的结构。

2.【正确】线性表中,存在唯一一个被称为第一元素的元素。

3.【错误】线性表中,每一个元素均存在前驱。

4.【错误】在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。

5.【正确】线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。

6.【错误】线性表的链式存储结构优于顺序存储结构。

7.【正确】顺序存储的线性表可以按序号随机存取。

8.【错误】线性表的逻辑顺序与存储顺序总是一致的。

9.【错误】在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。

10.【正确】线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/121886605