【数据结构与算法】期末复习刷题日寄Part01

刷题日记?刷题日寄!
这学期的数据结构课程快要结束,开始复习刷题,量不求多,但求坚持每日更新!
🔥 系列专栏:数据结构&算法
🌹 发现有需要纠正的地方,烦请指正!
🚀 欢迎小伙伴们的三连+关注!

【数据结构与算法】期末复习刷题日寄Part01

第01天

1、数据结构是指:
A、数据元素的组织形式
B、数据类型
C、数据存储结构
D、数据定义

2、树型结构是数据元素之间存在的一种:
A、一对一关系
B、多对多关系
C、一对多关系
D、多对一关系

3、数据结构只是研究数据的逻辑结构和物理结构,这种观点:
A、正确
B、错误
C、前半句对,后半句错
D、前半句错,后半句对

4、计算机内部数据处理的基本单位是:
A、数据
B、数据元素
C、数据项
D、数据库

5、在存储数据时,通常不仅要存储各数据元素,还要存储:
A、数据的操作方法
B、数据元素的类型
C、数据元素之间的关系
D、数据的存取方法

6、下列数据结构中,不属于线性结构的是:
A、树
B、字符串
C、队列
D、栈

7、以下关于数据结构的说法中,正确的是:
A、数据的逻辑结构独立于其存储结构
B、数据的存储结构独立于其逻辑结构
C、数据的逻辑结构唯一决定了其存储结构
D、数据结构仅由其逻辑结构和存储结构决定

8、数据的基本单元是:
A、数据项
B、数据元素
C、信息项
D、表元素

9、数据的最小单位是:
A、数据项
B、数据元素
C、信息项
D、表元素

10、可以用()定义一个完整的数据结构
A、数据元素
B、数据对象
C、数据关系
D、抽象数据类型


第01天题目答案:

12345678910
ACBBCAABAD

第02天

1、算法分析的目的是:
A、找出数据结构的合理性
B、研究算法中的输入和输出关系
C、分析算法的效率以求改进
D、分析算法的易懂性和文档性

2、算法分析的两个主要方面是:
A、空间复杂度和时间复杂度
B、正确性和简明性
C、可读性和文档性
D、数据复杂性和程序复杂性

3、某算法的时间复杂度是 O ( n 2 ) O(n^2) O(n2),表明算法的():
A、问题规模为 n 2 n^2 n2
B、问题规模为 n 2 n^2 n2呈正比
C、执行时间为 n 2 n^2 n2
D、执行时间与 n 2 n^2 n2呈正比

4、数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为():
A、存储结构
B、逻辑结构
C、链式存储结构
D、顺序存储结构

5、计算机算法指的是:
A、计算方法方法
B、排序方法
C、解决问题的有限运算序列
D、调度方法

6、计算机算法具备输入、输出和()五个特性:
A、可行性、可移植性和可扩充性
B、可行性、确定性和有穷性
C、确定性、有穷性和稳定性
D、易读性,稳定性和安全性

7、数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要( ):
A、低
B、高
C、相同
D、不确定

8、在顺序表中,只要知道( ),就可在相同时间内求出任一结点的存储地址:
A、基地址
B、结点大小
C、向量大小
D、基地址和结点大小

9、在等概率情况下,顺序表的插入操作要移动表长的( )结点:
A、全部
B、一半
C、三分之一
D、四分之一

10、顺序表所占字节数与( )无关:
A、元素存放顺序
B、表长
C、元素类型
D、元素中各字段的类型


第02天题目答案:

12345678910
CADCCBBDBA

第03天

1、线性表采用链式存储时,其地址():
A、必须是连续的
B、一定是不连续的
C、部分地址必须是连续的
D、连续与否都可以

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

3、在双向循环链表中,在 p 所指的结点之后插入 s 指针所指的结点,其操作是( ):
A、
p->next = s;
s->prior = p;
p->next->prior = s;
s->next = p->next;
B、
s->prior = p;
s->next = p->next;
p->next = s;
p->next->prior = s;
C、
p->next = s;
p->next->prior = s;
s->prior = p;
s->next = p->next;
D、
s->prior = p;
s->next = p->next;
p->next->prior = s;
p->next = s;

4、设单链表中指针 p 指向结点 m,若要删除 m 之后的一个结点(若存在),则需修改指针的操作为( ):
A、p->next = p->next->next;
B、p = p->next;
C、p = p->next->next;
D、p->next = p;

5、在一个单链表中,已知 q 结点是 p 结点的前趋结点,若在 q 和 p 之间插入 s 结点,则须执行( ):
A、
s->next = p->next;
p->next = s;
B、
q->next = s;
s->next = p;
C、
p->next = s->next;
s->next = p;
D、
p->next = s;
s->next = q;

6、在( )运算中,使用顺序表比链表好:
A、插入
B、删除
C、根据序号查找
D、根据元素值查找

7、若线性表最常用的操作为存取第i个元素及其直接前驱和直接后继,则采用( )结构效率高:
A、顺序结构
B、单链表
C、循环链表
D、双向链表

8、对于一个线性表,最常用的操作是插入和删除,则采用( )结构:
A、顺序结构
B、散列结构
C、索引结构
D、链式结构

9、对于非空线性表,( )操作在单链表上实现比在顺序表上实现效率高:
A、删除所有介于 m 和 n 之间的元素(m < n)
B、在最后位置插入一个新元素
C、顺序输出所有元素
D、计算表中值为 x 的元素个数

10、将长度为 n 的单链表插入到长度为 m 的单链表的后面,时间复杂度为( ):
A、O(1)
B、O(n)
C、O(m)
D、O(m+n)


第03天题目答案:

12345678910
DCDABCADAC

第04天

1、设二维数组 A [ 0 , … , m − 1 ] [ 0 , … , n − 1 ] A[0,…,m-1][0,…,n-1] A[0,,m1][0,,n1] 按行优先顺序存储在内存中,第一个元素的地址为 p,每个元素占 k 个字节,则元素 a i j a_{ij} aij 的地址为( ):
A、 p + [ i ∗ n + j ] ∗ k p +[i*n+j]*k p+[in+j]k
B、 p + [ ( i − 1 ) ∗ n + j − 1 ] ∗ k p+[(i-1)*n+j-1]*k p+[(i1)n+j1]k
C、 p + [ ( j − 1 ) ∗ n + i − 1 ] ∗ k p+[(j-1)*n+i-1]*k p+[(j1)n+i1]k
D、 p + [ j ∗ n + i − 1 ] ∗ k p+[j*n+i-1]*k p+[jn+i1]k

2、若数组 A [ 0 , … , m − 1 ] [ 0 , … , n − 1 ] A[0,…,m-1][0,…,n-1] A[0,,m1][0,,n1] 按列优先顺序存储,则 a i j a_{ij} aij 地址为( ):
A、 L O C ( a 00 ) + [ j ∗ m + i ] LOC(a_{00})+[j*m+i] LOC(a00)+[jm+i]
B、 L O C ( a 00 ) + [ j ∗ n + i ] LOC(a_{00})+[j*n+i] LOC(a00)+[jn+i]
C、 L O C ( a 00 ) + [ ( j − 1 ) ∗ n + i − 1 ] LOC(a_{00})+[(j-1)*n+i-1] LOC(a00)+[(j1)n+i1]
D、 L O C ( a 00 ) + [ ( j − 1 ) ∗ m + i − 1 ] LOC(a_{00})+[(j-1)*m+i-1] LOC(a00)+[(j1)m+i1]

3、下三角矩阵 A n × n A_{n×n} An×n,按列顺序压缩存储在数组 S a [ 0 , … , n ( n + 1 ) 2 − 1 ) ] Sa [0,…,\frac{n(n+1)}{2}-1)] Sa[0,,2n(n+1)1)] 中,则非零元素 a i j a_{ij} aij 的地址为( ):
A、
( j − 1 ) × n − ( j − 1 ) ( j − 2 ) 2 + i − j (j-1)\times n-\frac{(j-1)(j-2)}{2}+i-j (j1)×n2(j1)(j2)+ij
B、
( j − 1 ) × n − ( j − 1 ) ( j − 2 ) 2 + i − j + 1 (j-1)\times n-\frac{(j-1)(j-2)}{2}+i-j+1 (j1)×n2(j1)(j2)+ij+1
C、
( j − 1 ) × n − ( j − 1 ) ( j − 2 ) 2 + j − 1 + 1 (j-1)\times n-\frac{(j-1)(j-2)}{2}+j-1+1 (j1)×n2(j1)(j2)+j1+1
D、
( j − 1 ) × n − ( j − 1 ) ( j − 2 ) 2 + j − 1 (j-1)\times n-\frac{(j-1)(j-2)}{2}+j-1 (j1)×n2(j1)(j2)+j1

4、假定在数组 A 中,每个元素的长度为 3 个字节,行下标 i 从 1 到 8,列下标 j 从 1 到 10,从首地址 SA 开始连续存放在存储器内,存放该数组至少需要的单元数为( )字节:
A、80
B、100
C、240
D、270

5、数组 A 中,每个元素的长度为 3 个字节,行下标 i 从 1 到 8,列下标 j 从 1 到 10,从首地址 SA 开始连续存放在存储器内,该数组按行存放时,元素 A [ 8 ] [ 5 ] A[8][5] A[8][5] 的起始地址为( ):
A、SA+141
B、SA+144
C、SA+222
D、SA+225

6、若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点( ):
A、正确
B、不正确

7、若对 n 阶对称矩阵 A 以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组 B [ 1 , . . . , ( n ( n + 1 ) ) / 2 ] B[1,...,(n(n+1))/2] B[1,...,(n(n+1))/2] 中,则在 B 中确定 a i j ( i < j ) a_{ij} (i < j) aij(i<j)的位置 k 的关系为():
A、 i ∗ ( i − 1 ) / 2 + j i*(i-1)/2+j i(i1)/2+j
B、 j ∗ ( j − 1 ) / 2 + i j*(j-1)/2+i j(j1)/2+i
C、 i ∗ ( i + 1 ) / 2 + j i*(i+1)/2+j i(i+1)/2+j
D、 j ∗ ( j + 1 ) / 2 + i j*(j+1)/2+i j(j+1)/2+i

8、数组通常具有的两种基本操作是:
A、建立和删除
B、索引和修改
C、查找和修改
D、查找和索引

9、已知一个顺序存储的线性表,设每个结点需占 m m m 个存储单元,若第一个结点的地址为 d 1 d1 d1,则第 i ( i ≥ 1 ) i(i \geq 1) i(i1)个结点的地址为:
A、 d 1 + ( i − 1 ) ∗ m d1+(i-1)*m d1+(i1)m
B、 d 1 + i ∗ m d1+i*m d1+im
C、 d 1 − i ∗ m d1-i*m d1im
D、 d 1 + ( i + 1 ) ∗ m d1+(i+1)*m d1+(i+1)m

10、稀疏矩阵的压缩存储方法是只存储:
A、非零元素
B、三元组 ( i , j , a i j ) (i,j,a_{ij}) (i,j,aij)
C、 a i j a_{ij} aij
D、 i , j i,j i,j


第04天题目答案:

12345678910
AAACCBBCAB

第05天

1、设有一个栈,元素的进栈次序为 A, B, C, D, E,下列是不可能的出栈序列( ):
A、A, B, C, D, E
B、B, C, D, E, A
C、E, A, B, C, D
D、E, D, C, B, A

2、在一个具有 n 个单元的顺序栈中,假定以地址低端(即 0 号单元)作为栈底,以 top 作为栈顶指针,当做出栈处理时,top 变化为( ):
A、top 不变
B、top = 0
C、top–
D、top++

3、向一个栈顶指针为 hs 的链栈中插入一个 s 结点时,应执行( ):
A、
hs->next = s;
B、
s->next = hs; hs = s;
C、
s->next = hs->next; hs->next = s;
D、
s->next = hs; hs = hs->next;

4、在具有 n 个单元的顺序存储的循环队列中,假定 front 和 rear 分别为队头指针和队尾指针,则判断队满的条件为( ):
A、rear%n == front
B、(front + 1)%n == rear
C、rear%n -1 == front
D、(rear + 1)%n == front

5、在具有 n 个单元的顺序存储的循环队列中,假定 front 和 rear 分别为队头指针和队尾指针,则判断队空的条件为( ):
A、rear%n == front
B、front + 1 = rear
C、rear == front
D、(rear + 1)%n = front

6、在一个链队列中,假定 front 和 rear 分别为队首和队尾指针,下列与删除一个结点的操作有关的是( ):
A、front = front->next
B、rear = rear->next
C、rear = front->next
D、front = rear->next

7、已知程序如下:

int s(int n) {
  return (n <= 0) ? 0 : s(n-1) + n;
}
void main( ) {
  cout << s(1);
}

程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息一次对应的是( ):
A、main( )->S(1)->S(0)
B、S(0)->S(1)->main( )
C、main( )->S(0)->S(1)
D、S(1)->S(0)->main( )

8、以下属于逻辑结构的是( ):
A、顺序表
B、二叉链表
C、栈
D、循环队列

9、顺序栈中共有 5 个存储空间,那么栈满的条件是 top 等于( )【已知栈空的条件是 top == -1】:
A、-1
B、4
C、5
D、0

10、已知队列 Q 中存放数据 (1,-2,3,-4,5,-6),其中 1 为队头,执行下面程序段之后,队列 Q1 和 Q2 中结果为( ):

void fun(CirQueue *Q, CirQueue *Q1, CirQueue *Q2) {
    int  e;
    InitQueue(Q1);
    InitQueue(Q2);
    while (!QueueEmpty(Q)) {
       e = DeQueue(Q);
       if (e>=0)
          EnQueue(Q1, e);
       else
          EnQueue(Q2, e);
    }
}

A、
Q1 = (1, 3, 5);
Q2 = (-2, -4, -6);
B、
Q1 = (1, -2, 3);
Q2 = (-4, 5, -6);
C、
Q1 = (1, -2, -6);
Q2 = (3, -4, 5,);


第05天题目答案:

12345678910
CCBDCAACBA

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四口鲸鱼爱吃盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值