没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构基础教程:新解第1章填空与选择题
数据结构基础教程:新解第1章填空与选择题
0 下载量 88 浏览量
更新于2024-06-28
收藏 861KB DOC 举报
本资源是一份针对《数据结构基础教程》习题的解答文档,详细覆盖了数据结构的基本概念和理论。主要内容包括: 1. 数据定义与分类: - 数据被定义为计算机可处理的一系列符号集合,分为数值型和非数值型两大类。 - 数据的逻辑结构关注的是数据之间的邻接关系,如数组、链表等形式。 2. 数据元素与数据项: - 数据项是数据元素的最小标识单位,具有部分属性但通常不完整。 - 数据元素则是数据处理的核心单元,每个元素都有完整的意义。 3. 存储结构与存储结点: - 存储结点是数据在内存中的物理表示,包含数据本身及其邻接关系的信息。 - 存储方式有两种:连续存取和分散存取。 4. 基本操作与数据处理: - 查找是数据处理中最基本的操作,而删除、读取和插入也是常用操作。 - 链式存储结构的特点在于每个结点可以有多于一个指针,用于反映逻辑关系。 5. 算法描述: - 书中倾向于使用C语言来描述算法,通过代码示例展示操作的执行过程。 6. 习题与示例: - 提供了具体问题如百家中姓氏的线性关系分析,以及数据结点与存储结点的概念区分。 - 对for循环的时间复杂度进行了分析,指出该段代码的时间复杂度为O(n)。 这份资料有助于学习者理解和掌握数据结构的基础理论,并通过实践习题来巩固所学知识。通过解答这些问题,学生可以加深对数据结构的理解,提高算法设计和分析能力。
资源详情
资源推荐
{
rtr = malloc (size);
rtr->Data = ptr->Data ;
qtr->Next = rtr ;
qtr = rtr ;
ptr = ptr->Next ;
}
qtr->Next = NULL ;
}
5.已知一个带表头结点的递增单链表。试编写一个算法,功能是从表中去除值大于
min、且值小于 max 的数据元素。(假定表中存在这样的元素)
答:所需算法编写如下。
Del_Sq(Lk_h, nim, max)
{
ptr = Lk_h->Next ; /* ptr 指向链表的起始结点 */
while ( (ptr != NULL) && (ptr->Data <= min) ) /* 跳过所有值<=min 的结点 */
{
qtr = ptr ;
ptr = ptr->Next ;
}
while ( (ptr != NULL) && (ptr->Data <max) ) /* 若结点值<max,则去除 */
p = p->Next ;
qtr->Next = ptr ; /* qtr 指出第 1 个大于 max 的结点位置,完成 */
}
6.已知一个带表头结点的无序单链表。试编写一个算法,功能是从表中去除所有值大
于 min、且值小于 max 的数据元素。
答:所需算法编写如下,其中指针 ptr 总是指向当前被检查的结点,qtr 总是指向被检
查结点的直接前驱。
Del_Lk (Lk_h, min, max)
{
ptr = Lk_h->Next ; /* ptr 指向单链表的起始结点 */
while (ptr != NULL) /* 扫视直到链尾结点 */
{
if ( (ptr->Data <= min) || (ptr->Data >= max) /* 不满足删除条件 */
{
qtr = ptr ; /* 往后移动 qtr 和 ptr */
ptr = ptr->Next ;
}
else /* 删除 ptr 所指结点,往后移动 ptr */
{
qtr->Next = ptr->Next ;
free (ptr);
ptr = qtr->Next ;
}
}
}
7.一个单链表 Lk 的表头指针为 Lk_h,不同结点的 Data 域值有可能相同。编写一个算
法,功能是计算出 Data 域值为 x 的结点的个数。
答:算法应该遍历链表的每一个结点,遇到一个结点的 Data 域值为 x 时,计数器 n 就
加 1。最后返回计数器 n。
Count_Lk (Lk_h)
{
n = 0 ;
ptr = Lk_h ;
while (ptr != NULL)
{
if (ptr->Data == x)
n = n+1 ;
ptr = ptr->Next
}
return (n) ;
}
第 3 章习题解答
一、填空
1.限定插入和删除操作只能在一端进行的线性表,被称为是 栈 。
2.如果在顺序栈满时仍打算进行进栈操作,就称为发生了“ 上溢 ”出错。
3.如果在顺序栈空时仍打算进行出栈操作,就称为发生了“ 下溢 ”出错。
4.在具有
n
个数据结点的循环队列中,队满时共有
n
-1 个数据元素。
5.如果操作顺序是先让字母 A、B、C 进栈,做两次出栈;再让字母 D、E、F 进栈,做
一次出栈;最后让字母 G 进栈,做三次出栈。最终这个堆栈从栈顶到栈底的余留元素应该是
DA 。
6.中缀表达式(a+b)-(c/(d+e))对应的后缀表达式是 ab+cde+/- 。
7.函数的递归调用有两种形式:如果一个函数是直接调用自己,就称其为 直接 递归
调用;如果一个函数是通过另一个函数来调用自己,就称其为 间接 递归调用。
8.设某栈的元素输入顺序是 1、2、3、4、5,想得到 4、3、5、2、1 的输出顺序。那
么 push、pop 的操作序列应该是 push、push、push、push、pop、pop、push、pop、pop、
pop 。
9.设链栈的栈顶指针为 Ls_top,那么它非空的条件应该是 Ls_top != NULL 。
10.队列中,允许进行删除的一端称为 队首 。
二、选择
1.一个栈的元素进栈序列是 a、b、c、d、e,那么下面的 C 不能做为一个出栈序列。
A.e、d、c、b、a B.d、e、c、b、a
C.d、c、e、a、b D.a、b、c、d、e
2.判定一个顺序队列 Qs(最多有
n
个元素)为空的条件是 C 。
剩余41页未读,继续阅读
matlab大师
- 粉丝: 2635
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功