严蔚敏版数据结构习题答案:C语言实现1-5章关键算法

需积分: 9 4 下载量 129 浏览量 更新于2024-08-02 收藏 105KB DOC 举报
本资源是一份详细的数据结构习题答案集,基于严蔚敏版的教材,覆盖了C语言版本,主要包括第1到5章的内容。以下是部分内容解析: 1.16 题目:print_descending 函数 这个函数用于按从大到小的顺序输出三个整数 x、y 和 z。通过输入这三个数,程序首先使用三重嵌套 if 语句进行比较,即检查 x 是否大于 y,然后 y 是否大于 z。如果条件满足,执行交换操作(这里使用了未定义的双目运算符 <->,实际应使用标准的赋值运算符)以实现冒泡排序。最后,函数会按照降序打印出 x、y 和 z 的值。 1.17 题目:fib 函数 这是一个求 k 阶斐波那契序列第 m 项的值 f 的函数。函数首先检查输入的 k 和 m 是否合法,如果 k 小于 2 或 m 为负,则返回错误。对于常规情况,如果 m 等于 k 或 k-1,直接计算 f 值为 1。否则,采用迭代方法计算斐波那契序列,利用一个临时数组 temp 存储中间结果,通过一个 for 循环逐步更新序列值,直到计算出第 m 项。时间复杂度分析指出,这种方法优化了递归设计的 O(k^m),避免了指数级的复杂度,达到了线性时间复杂度 O(m)。 1.18 题目:定义结构体和函数 summary 这里定义了两个结构体,resulttype 用于存储运动成绩信息,包括运动项目、性别、学校名称、成绩和姓名;scoretype 结构体则用于记录每个学校的男女生总分和团体总分。函数 summary 接受一个 resulttype 类型的数组作为参数,遍历数组,根据学校名称(如 'A' 至 'E')进行分类,累加每个学校的男女分数,并将结果存储在 scoretype 结构体中。该函数旨在汇总并显示各个学校的总分情况。 这些习题涵盖了排序算法(冒泡排序)、递归与迭代解决数学问题(斐波那契序列)、以及数据结构和数组的使用,展示了 C 语言在数据处理中的应用。通过解答这些问题,学习者可以深入理解数据结构的基础概念,提高编程技巧和算法实现能力。