第一章引论

C语言相关知识点复习

1、单选题:
‏下列程序的输出结果是      。​‏​‏#include <stdio.h>​‏void main()​‏{​‏    int **k,*a,b=100;​‏    a=&b;​‏    k=&a;​‏    printf("%dn",*k);​‏}​
选项:
A: 运行出错
B: a的地址
C: 100
D: b的地址
答案: 【 b的地址

2、单选题:
设有以下说明语句typedef struct ex { ‌     int x ;‌ float y;‌ char z ;‌} example;‌‍则下面的叙述中不正确的是()。‌‍‌
选项:
A: ex是结构体名称
B: example是结构体变量
C: x,y,z都是结构体成员名
D: struct是结构体类型的关键字
答案: 【 example是结构体变量

3、填空题:
‍以下程序是将无符号八进制数字构成的字符串转换为十进制整数。‍‍‍‍#include <stdio.h>‍‍void main( )‍‍{‍‍    char *p,s[6];‍‍    int n;‍‍    p=s;‍‍    gets(p);‍‍    n=*p-'0';‍‍    while(              ){‍‍        n=n*8+*p-'0';‍‍    }‍‍    printf("%d n",n);‍‍}‍‍‍
答案: 【 *++p!= ''

4、填空题:
‌若有int *a;写出使用malloc函数动态给指针变量a分配内存的语句                         。‌
答案: 【 a = (int *)malloc(sizeof(int));

5、填空题:
‎若有如下结构体定义:‎‎struct student{‎‎        char *name;‎‎        int age;‎‎        float score;‎‎}*stu;‎‎写出访问第一个成员变量的语句                  。‎‎‎
答案: 【 stu->name;

在线练习1

1、单选题:
​数据结构在计算机内存中的表示是指(    )。‍
选项:
A: 数据的存储结构
B: 数据结构
C: 数据的逻辑结构
D: 数据元素之间的关系
答案: 【 数据的存储结构

2、单选题:
‍在数据结构中,从逻辑上可以将之分为(   )结构。‌
选项:
A: 动态和静态结构
B: 紧凑和非紧凑结构
C: 线性和非线性结构
D: 内部和非内部结构
答案: 【 线性和非线性结构

3、单选题:
‏在数据结构中,从存储上可以将之分为(    )结构。‌
选项:
A: 动态和静态结构
B: 紧凑和非紧凑结构
C: 顺序和非顺序结构
D: 线性和非线性结构
答案: 【 顺序和非顺序结构

4、单选题:
‍算法的时间复杂度取决于(    )。​
选项:
A: 问题的规模
B: 待处理数据的初态
C: 问题的规模以及待处理数据的初态
D: 没有正确答案
答案: 【 问题的规模以及待处理数据的初态

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

6、单选题:
‎衡量算法效率优劣的不包括(  )。‎
选项:
A: 正确性和可读性
B: 健壮性/鲁棒性
C: 高效率与低存储
D: 现实性
答案: 【 现实性

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

8、单选题:
下面的程序段时间复杂度为(   )。​ for(i=1;i<n;i++)​    for(j=1;j<n;j++)   ​        x=x+1;​
选项:
A: O(2n)
B: O(n)
C:
D:
答案: 【 

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

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

11、单选题:
​下面程序段的时间复杂度为(     )。‌​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)

12、单选题:
‎以下说法正确的是()。‍
选项:
A: 数据项是数据的基本单位
B: 数据元素是数据的最小单位
C: 数据结构是带结构的数据项的集合
D: 一些表面上很不相同的数据可以有相同的逻辑结构
答案: 【 一些表面上很不相同的数据可以有相同的逻辑结构

13、单选题:
​下列结构属于线性结构的是(  )。‏
选项:
A: 最小生成树
B: 哈夫曼树
C: 连通图
D: 队列
答案: 【 队列

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

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

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

17、判断题:

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

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

18、判断题:
‎数据的逻辑结构分为线性结构、树型结构、图状结构和集合。‏
选项:
A: 正确
B: 错误
答案: 【 正确

19、判断题:
‌算法最终必须由计算机程序实现。‍
选项:
A: 正确
B: 错误
答案: 【 错误

20、填空题:
‏若某一问题的数据元素的数据类型没有明确给出,在解决该问题时用DataType定义数据元素的类型。当用户提供的数据为整型时,试写出将DataType定义为整型的语句                  。‍
答案: 【 typedef int DataType;

21、填空题:
‌抽象数据类型的3个组成部分,它们分别为                 、数据关系和基本操作。‎
答案: 【 数据对象

22、填空题:
​在存储数据时,通常不仅要存储各数据元素的值,而且还要存储            。‏
答案: 【 数据元素之间的关系

23、填空题:
‍变量的指针,其含义是指该变量的             。‍
答案: 【 地址

24、填空题:
‍有如下函数:‌‍int *sort(){‌‍    int *p;‌‍    return p;‌‍}‌‍则该函数是返回           的函数。‌
答案: 【 指针##%_YZPRLFH_%##地址

测验

1、判断题:
‎时间复杂度和频度是一样的。​
选项:
A: 正确
B: 错误
答案: 【 错误

2、填空题:
‍若某个算法关键语句被执行的频度为n,则该算法的时间复杂度记为                。‏
答案: 【 O(n)

测验1

1、单选题:
‌数据的逻辑结构包括?‌
选项:
A: 线性结构和非线性结构
B: 顺序结构和非顺序结构
C: 静态结构和非静态结构
D: 动态结构和非动态结构
答案: 【 线性结构和非线性结构

2、单选题:
‎在数据结构中,与所使用的计算机无关的是数据的(  ) 结构。‎
选项:
A: 逻辑
B: 存储
C: 逻辑和存储
D: 物理
答案: 【 逻辑

算法中时间复杂度的计算

1、单选题:
‌设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。​‌  x = 2;​‌  while ( x < n/2 ){​‌        x = 2*x;​‌       }​
选项:
A:
B: O(n)
C:
D:
答案: 【 

第二章线性表

在线练习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、单选题:
‎线性表( a1,a2,…,an)以链式方式存储时,访问第i个元素的时间复杂度为(    )‌
选项:
A: O(i)
B: O(1)
C: O(n)
D: O(i-1)
答案: 【 O(n)

17、单选题:
​头指针为H的循环单链表中尾结点P的特点是(    )。‎
选项:
A: P->next=H        
B: P->next= H->next     
C: P=H     
D: P=H->next
答案: 【 P->next=H        

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

19、单选题:
‎在单链表中,增加头结点的目的是(    )。‎
选项:
A: 使单链表至少有一个结点
B: 标志表中首结点的位置
C: 链表判空、插入第一个结点以及删除第一个结点等运算方便
D: 说明该单链表是线性表的链式存储结构
答案: 【 链表判空、插入第一个结点以及删除第一个结点等运算方便

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、填空题:
‌在一个长度为n的顺序表中,在第i个元素之前插入一个新元素,需要向后移动‍       个元素。‍
答案: 【

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

发表评论

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