第一章引论

在线练习1

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: D 没有正确答案
答案: 【 问题的规模以及待处理数据的初态

6、单选题:
​某算法的时间复杂度是O(n^2),表明该算法的(   )。​
选项:
A: 执行时间与n^2成正比
B: 问题规模是n^2
C: 执行时间等于n^2
D: 问题规模与n^2成正比
答案: 【 执行时间与n^2成正比

7、单选题:
‏算法的计算量的大小称为计算的(  )。‌
选项:
A: 效率
B: 复杂性
C: 现实性 
D: 难度
答案: 【 复杂性

8、单选题:
​计算机算法指的是(  )。‏
选项:
A: 计算方法
B: 排序方法
C: 解决问题的步骤序列
D: 调度方法
答案: 【 解决问题的步骤序列

9、单选题:
‍算法必须具备(  ) 这三个特性。‏
选项:
A: 可执行性、可移植性、可扩充性
B: 可执行性、确定性、有穷性
C: 确定性、有穷性、稳定性
D: 易读性、稳定性、安全性
答案: 【 可执行性、确定性、有穷性

10、单选题:
在下面的程序段中,对x的赋值语句的频度为(   )。​ for(i=1;i<n;i++)​    for(j=1;j<n;j++)   ​        x=x+1;​‍​
选项:
A: O(2n)
B: O(n)
C: O(n^2)
D: O(log2n)
答案: 【 O(n^2)

11、单选题:
‌算法分析的两个主要方面是(    )。‌
选项:
A: 空间复杂度和时间复杂度
B: 正确性和简明性
C: 可读性和文档性
D: 数据复杂性和程序复杂性
答案: 【 空间复杂度和时间复杂度

12、单选题:
‎在决定选取何种存储结构时,一般不考虑(    )。‎
选项:
A: 各结点的值如何
B: 结点个数的多少
C: 对数据有哪些运算
D: 所用编程语言实现这种结构是否方便
答案: 【 各结点的值如何

13、单选题:
‍有如下递归函数fact(n),分析其时间复杂度为(    )。‍‍int fact(int n)‍‍{‍‍   if(n<=1)  return 1;‍‍   else return(n*fact(n-1));‍‍}‍
选项:
A: O(n)
B: O(1)
C: O(n^2)
D: O(logn)
答案: 【 O(n)

14、单选题:
‏下面程序段的时间复杂度为(    )。‍‏for(i=0;i<n;i++)‍‏  for(j=0;j<m;j++)‍‏    A[i][j]=0;‍
选项:
A: O(n*m)
B: O(n^2)
C: O(m^2)
D: O(1)
答案: 【 O(n*m)

15、单选题:
​下面程序段的时间复杂度为(     )。‎​void sum(int n) //n为正整数‎​{‎​  int p=1,sum=0,i;‎​  for(i=1;i<=n;i++)‎​  {‎​    p*=i;‎​    sum+=p;‎​  }‎​}‎
选项:
A: O()
B: O(n)
C: O(1)
D: O(n^2)
答案: 【 O(n)

16、判断题:
‏顺序存储方式的优点是存储密度大,且插入、删除运算效率高。‌
选项:
A: 正确
B: 错误
答案: 【 错误

17、判断题:
‌算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。‏
选项:
A: 正确
B: 错误
答案: 【 错误

18、判断题:
‍数据结构的抽象操作的定义与具体实现有关。​
选项:
A: 正确
B: 错误
答案: 【 错误

19、判断题:
‍链式存储的优点是可以随机存储。‍
选项:
A: 正确
B: 错误
答案: 【 错误

20、判断题:
‏数据结构的抽象操作的定义与具体实现有关。‏
选项:
A: 正确
B: 错误
答案: 【 错误

21、判断题:
‍算法原地工作的含义是指不需要任何额外的辅助空间。‌
选项:
A: 正确
B: 错误
答案: 【 错误

22、判断题:

‍在相同的规模n下,复杂度为O(n)的算法在时间上总是优于复杂度为O()。

​选项:
A: 正确
B: 错误
答案: 【 正确

23、判断题:
‎所谓时间复杂度是指最坏情况下,估计算法执行时间的一个上界。‌
选项:
A: 正确
B: 错误
答案: 【 正确

24、判断题:
‌同一个算法,实现语句的级别越高,执行效率越低。‎
选项:
A: 正确
B: 错误
答案: 【 正确

25、判断题:
‌数据元素是数据的最小单位。‎
选项:
A: 正确
B: 错误
答案: 【 错误

第二章线性表

在线练习2

1、单选题:
‏下述哪一条是顺序存储结构的优点( )。‏
选项:
A: 存储密度大 
B: 插入运算方便 
C: 删除运算方便 
D: 可方便地用于各种逻辑结构的存储表示
答案: 【 存储密度大 

2、单选题:
‏下面关于线性表的叙述中错误的是(  )。​
选项:
A: 线性表采用顺序存储,必须占用一片连续的存储单元。
B: 线性表采用顺序存储,便于进行插入和删除操作。
C: 线性表采用链式存储,不必占用一片连续的存储单元。
D: 线性表采用链式存储,便于插入和删除操作。    
答案: 【 线性表采用顺序存储,便于进行插入和删除操作。

3、单选题:
‌若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。‏
选项:
A: 顺序表 
B: 双链表
C: 带头结点的双循环链表
D: 单循环链表
答案: 【 顺序表 

4、单选题:
‏设某顺序表中第一个元素的地址是Base,下限值为1,每个结点占m个单元,则第i个结点的地址为( )。‎
选项:
A: Base+(i+1)×m
B: Base+i×m
C: Base+(i-1)×m
D: Base-i×m 
答案: 【 Base+(i-1)×m

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、单选题:
‌若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为 ()。‏
选项:
A: O(0)  
B: O(1)  
C: O(n)  
D: O(
答案: 【 O(n)  

11、单选题:
‏对于顺序表,访问结点和删除结点的时间复杂度分别为( )。‎
选项:
A: O(n)  O(n)  
B: O(n)  O(1)     
C: O(1)  O(n)     
D: O(1)  O(1)
答案: 【 O(1)  O(n)     

12、单选题:
‍在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。​
选项:
A: p->next=s;s->next=p->next; 
B: s->next=p->next;p->next=s;
C: p->next=s;p->next=s->next;  
D: p->next=s->next;p->next=s;
答案: 【 s->next=p->next;p->next=s;

13、单选题:
‌对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( )。    ‍
选项:
A: head==NULL 
B: head→next==head   
C: head→next==NULL 
D: head!=NULL
答案: 【 head→next==NULL 

14、单选题:
‌将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( )。‌
选项:
A: n 
B: 2n-1      
C: 2n     
D: n-1
答案: 【 n 

15、单选题:
在双向链表中,在p所指向的结点前插入一个q所指向的结点,相应的操作语句是( )。‏注:双向链表的结点结构为(prior,data,next)。‏
选项:
A: p->prior=q;q->next=p;p->prior->next=q;q->prior=q;
B: p->prior=q;p->prior->next=q;q->next=p;q->prior=p->prior;
C: q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;
D: q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;
答案: 【 q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;

16、单选题:
‏若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用(    )存储方式最节省运算时间。‍
选项:
A: 单链表
B: 双链表
C: 单循环链表
D: 带头结点的双循环链表
答案: 【 带头结点的双循环链表

17、单选题:
‌线性表( a1,a2,…,an)以链式方式存储时,访问第i个元素的时间复杂度为(    )‍
选项:
A: O(i)
B: O(1)
C: O(n)
D: O(i-1)
答案: 【 O(n)

18、单选题:
‍下面的叙述不正确的是(  )。‎
选项:
A: 线性表在链式存储时,查找第i个元素的时间同i的值成正比
B: 线性表在链式存储时,查找第i个元素的时间同i的值无关
C: 线性表在顺序存储时,查找第i个元素的时间同i的值成正比
D: 线性表在顺序存储时,查找第i个元素的时间同i的值无关
答案: 【 线性表在顺序存储时,查找第i个元素的时间同i的值无关

19、单选题:
‍循环链表H的尾结点P的特点是(    )。‎
选项:
A: P->next=H        
B: P->next= H->next     
C: P=H     
D: P=H->next
答案: 【 P->next=H        

20、单选题:
两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是(    )。​
选项:
A: P->next==Q->next
B: P->next==Q
C: Q->next==P   
D: P==Q
答案: 【 P->next==Q

21、单选题:
‍在单链表中,增加头结点的目的是(    )。​
选项:
A: 使单链表至少有一个结点
B: 标志表中首结点的位置
C: 方便运算的实现
D: 说明该单链表是线性表的链式存储结构
答案: 【 方便运算的实现

22、单选题:
下面关于线性表的叙述中,错误的是(     )。‌
选项:
A: 顺序表必须占一片地址连续的存储单元
B: 顺序表可以随机存取任一元素
C: 链表不必占用一片地址连续的存储单元    
D: 链表可以随机存取任一元素
答案: 【 链表可以随机存取任一元素

23、单选题:
设p为指向单循环链表上某结点的指针,则*p的直接前驱(     )。‍
选项:
A: 找不到 
B: 查找时间复杂度为O(1)
C: 查找时间复杂度为O(n)
D: 查找结点的次数约为n
答案: 【 查找时间复杂度为O(n)

24、单选题:
以下关于线性表的论述,不正确的是(    )。‌
选项:
A: 线性表中的元素可以是数字、字符、记录等不同类型。
B: 顺序表中包含的元素个数不是任意的。
C: 线性表中的每个结点都有且仅有一个直接前趋和一个直接后继。
D: 存在这样的线性表,即表中没有任何结点。
答案: 【 线性表中的每个结点都有且仅有一个直接前趋和一个直接后继。

25、单选题:
在(    )的运算中,使用顺序表比链表好。‎
选项:
A: 插入        
B: 根据序号查找      
C:  删除         
D: 根据元素查找
答案: 【 根据序号查找      

26、判断题:
‌静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。‎
选项:
A: 正确
B: 错误
答案: 【 正确

27、判断题:
‎线性表的特点是每个元素都有一个前驱和一个后继。​
选项:
A: 正确
B: 错误
答案: 【 错误

28、判断题:
‍若长度为n的线性表采用顺序存储结构,找到其中第i个元素的时间复杂度为O(n)。‎
选项:
A: 正确
B: 错误
答案: 【 错误

29、判断题:
‌已知带头结点的双向循环链表L,判断其为空表的条件是L->next==L && L->prior==L。‎
选项:
A: 正确
B: 错误
答案: 【 正确

30、判断题:
顺序表的插入、删除运算更方便。‏
选项:
A: 正确
B: 错误
答案: 【 错误

31、判断题:
‍链表的性能优于顺序表。​
选项:
A: 正确
B: 错误
答案: 【 错误

32、判断题:
​顺序表适宜于顺序存取,而链表适宜于随机存取。‎
选项:
A: 正确
B: 错误
答案: 【 错误

33、判断题:
‏顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。‎
选项:
A: 正确
B: 错误
答案: 【 错误

34、判断题:
插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。​
选项:
A: 正确
B: 错误
答案: 【 错误

35、判断题:
​线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。‍
选项:
A: 正确
B: 错误
答案: 【 正确

第三章栈和队列

单元测试1

1、单选题:
‎栈和队列的共同点是( )。​
选项:
A: 都是先进先出
B: 都是先进后出
C: 只允许在端点处插入和删除元素
D: 没有共同点
答案: 【 只允许在端点处插入和删除元素

2、单选题:
栈和队都是( )。‎
选项:
A: 顺序存储的线性结构
B: 链式存储的非线性结构
C: 限制存取点的线性结构   
D: 限制存取点的非线性结构
答案: 【 限制存取点的线性结构   

3、单选题:
‏依照六个元素6,5,4,3,2,1 的顺序进栈,下列哪一个不是合法的出栈序列( )。‍
选项:
A: 543612
B: 453216
C: 346521  
D: 234156 
答案: 【

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注