C语言数据结构考试测试题目,题库+答案解析

简介: C语言数据结构考试试题,题库+答案解析。数据结构中评价算法的两个重要指标是( )。设n为正整数。试确定下列各程序段中前置以记号@的语句的频度:线性表若采用顺序存储结构时,要求内存中可用存储单元的地址( )。单链表中,增加一个头结点的目的是为了( ))向一个栈顶指针为top的链栈中插入一个p所指向的结点时,其操作步骤为( )。有两个串p和q,求q在p中首次出现的位置的运算称为( )。广义表(a,(b,c),d,e)的表尾为 ___________。由3个结点可以构造出( )种不同

1 (单选题)数据结构中评价算法的两个重要指标是(    )。

  • A. 效率、难度
  • B. 可行性、确定性
  • C. 正确性、稳定性
  • D. 时间复杂度、空间复杂度

答案:D

解析:数据结构中评价算法的两个重要指标是时间复杂度空间复杂度

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。

2  (单选题)设n为正整数。试确定下列各程序段中前置以记号@的语句的频度:

k=0;

for(i=1;i<=n;i++){

for(j=i;j<=n;j++)

   @ k++;

}

  • A.  n(n-1)/2
  • B.  n(n+1)/2
  • C. n+1
  • D. n2

答案:B

解析:i=1时,第二个for语句执行n次;i=2时,第二个for语句执行n-1次;i=3时,第二个for语句执行n-2次...... i=n时,第二个for语句执行1次。

所以语句频度=n+(n-1)+(n-2)+...+1=n(n+1)/2

3  (单选题)线性表若采用顺序存储结构时,要求内存中可用存储单元的地址(      )。

  • A. 必须是连续的
  • B. 部分地址必须是连续的
  • C. 一定是不连续的
  • D. 连续不连续都可以

答案:A

解析:线性表的顺序存储结构,指的是用一段地址连续的存储单位依次存储线性表的数据元素

4 单链表中,增加一个头结点的目的是为了(   )

  • A. 使单链表至少有一个结点
  • B. 标识表结点中首结点的位置
  • C. 方便运算的实现
  • D. 说明单链表是线性表的链式存储

答案:C

解析:单链表添加头结点主要是方便算法的实现,从而在单链表为空与非空时,保持插入与删除操作的一致。

5  (单选题)向一个栈顶指针为top的链栈中插入一个p所指向的结点时,其操作步骤为(   )。

  • A.top->next=p;
  • B.p->next=top->next; top->next=p;
  • C.p->next=top; top=p;
  • D. p->next=top;top=top->next;

答案:C

6  (单选题)有两个串p和q,求q在p中首次出现的位置的运算称为(   )。

  • A. 连接
  • B. 模式匹配
  • C. 求子串
  • D. 求串长

答案:B

解析:模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串。

7 (单选题)广义表(a,(b,c),d,e)的表尾为 ___________。

  • A. (b,c),d,e
  • B. ((b,c),d,e)
  • C. e
  • D. (e)

答案:B

解析:表尾是由除了表头以外的其余元素组成的广义表,所以,需要在表尾的直接元素外面再加一层括号。

8 (单选题)由3个结点可以构造出(  )种不同的二叉树。

  • A. 2
  • B. 3
  • C. 4
  • D. 5

答案:D

解析:3个结点可以构成5种形态的二叉树:根左左、根左右、左根右、根右右、根右左。

9 (单选题)利用二叉链表存储树,则根结点的右指针是( )。

  • A. 指向最左孩子
  • B. 指向最右孩子
  • C. 空
  • D. 非空

答案:C

解析:利用二叉链表存储树时,右指针指向兄弟结点,因为根节点没有兄弟结点,故根节点的右指针指向空。

10 (单选题)在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数是(  )。

  • A. 41
  • B. 82
  • C. 113
  • D. 122

答案:B

解析:一个森林的所有结点数=(所有结点的度数+n(n棵树,每棵树只有一个根节点)

一个森林的所有叶子结点数=(所有结点的度数+n(n棵树,每棵树只有一个根节点)-m(度数非0的结点个数)

11 (单选题)设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(  )

  • A. 空或只有一个结点
  • B. 任一结点无左孩子
  • C. 任一结点无右孩子
  • D. 任一结点无左孩子或者无右孩子

答案:D

解析:先序遍历顺序是:M-L-R,后序遍历顺序是:L-R-M,可以看到,只有中间的结点(M)顺序变化了,左右结点相对位置是不变的; 那可以推断出,要满足题意的话“二叉树的先序序列与后序序列正好相反”,说明整个二叉树左子树或者右子树有一个没有...”

12 (单选题)表达式a*(b+c/d)的后缀表达式是(    )。

  • A. abcd/+*
  • B. abc+*d/
  • C. abc*+d/
  • D. /+*abcd

答案:A

解析:先把每一步运算都加一个括号:(a*(b+(c/d)))

再把括号内的运算符移到括号外:(a(b(cd)/)+)*

最后把括号去掉:abcd/+*

13 (单选题)对于一个包含n个结点的树,用二叉链表存储时,其指针总数为(    )个。

  • A. n-1
  • B. n
  • C. n+1
  • D. 2n

答案:D

解析:对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为 2n 个

14 (单选题)在有向图中每个顶点的度等于该顶点的(      )。

  • A. 入度      
  • B. 出度
  • C. 入度与出度之和
  • D. 入度与出度之差

答案:C

解析:在有向图中,对于一个顶点,该结点的度等于顶点的入度+顶点的出度, 该结点的弧头数目称为入度,记为ID (v);结点的弧尾数目称为出度,记为OD (v),即TD (v)=ID (v)+OD (v):

15 (单选题)连通分量是(    )极大连通子图 。

  • A. 图
  • B. 树
  • C. 有向图
  • D. 无向图

答案:D

解析:无向图的极大连通子图称为的连通分量(ConnectedComponent)。任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。

相关文章
|
21天前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
34 0
|
21天前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
37 0
|
25天前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
164 0
|
13天前
|
存储 编译器 Linux
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
【C语言】自定义类型:结构体深入解析(二)结构体内存对齐&&宏offsetof计算偏移量&&结构体传参
|
22天前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
34 0
|
13天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
13天前
|
存储 搜索推荐 编译器
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
|
13天前
|
存储 网络协议 编译器
【C语言】自定义类型:结构体深入解析(三)结构体实现位段最终篇
【C语言】自定义类型:结构体深入解析(三)结构体实现位段最终篇
|
17天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
17天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解

推荐镜像

更多