精华内容
下载资源
问答
  • 数据结构与算法(C语言版)——陈越
    2021-04-14 12:34:37

    《数据结构与算法(C语言版)》——陈越

    笔者自述:我是在学了Java后,对面向对象的思想有了点体会后,后头看陈越老师2012年视频的时候有了全新的见解,本篇文章将记录我再次观看学习数据结构后的体会与总结,部分用我自己的言语复述,如有看不懂的,多多包涵。

    引子(我们要做的就是更好的增删改查)

    • 一个例子:图书馆排放书籍的方式,我们可以有三种:往书架上随便放、按照首字母顺序排放、分类且按首字母顺序排放。
      第一种,随便放,无论CRUD哪一个都很烦,查找从头开始,最多要查找N次。
      第二种,查询可以通过二分法查询,最多查找log(N)次,但是插入操作就很繁琐,因为比如要放在第一位,那么所有的书都需要往后移一位。
      第三种,在分类的时候就已经节省了很多时间了(但是也不完美,因为类分的过多就也很麻烦)。

    数据结构是什么

    • 数据对象在计算机中的组织方式。
    • 数据对象必定与加在其上的操作相关联。
    • 完成操作所用的方法就是算法
    • 通俗来说就是:数据结构就是书在书架上的排列方法(看引子),书肯定跟排放书的操作相关联,而那些操作用的方法就是算法(上面的引子)。
    更多相关内容
  • 数据结构考试复习及平时学习的好帮手
  • 数据结构 陈越

    2021-05-24 01:05:27
    陈越编著的《数据结构(第2)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,...

    cbbca113c0af83487a4bbc947e6c1bf5.png

    陈越编著的《数据结构(第2版)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养程序设计技能。本书第1章介绍了数据结构与算法的基本概念;第2章是对C语言关键内容的复习,为后续章节理解数据结构的实现做准备;第3章至第7章分别介绍了线性表、树、散列表、图、排序算法等经典数据结构与算法;最后在第8章通过对两个实际生活中提炼出的问题的解答,帮助读者更深刻地体会数据结构的应用。本书可作为高等学校计算机类专业“数据结构”课程的教材。

    ¥7.76定价:¥111.52(0.7折)

    /2016-06-01

    url_none.png

    陈越编著的《数据结构(第2版)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养程序设计技能。本书第1章介绍了数据结构与算法的基本概念;第2章是对C语言关键内容的复习,为后续章节理解数据结构的实现做准备;第3章至第7章分别介绍了线性表、树、散列表、图、排序算法等经典数据结构与算法;最后在第8章通过对两个实际生活中提炼出的问题的解答,帮助读者更深刻地体会数据结构的应用。本书可作为高等学校计算机类专业“数据结构”课程的教材。

    ¥7.76定价:¥111.35(0.7折)

    /2016-06-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥11.32定价:¥28.30(4折)

    何钦铭 等 著,陈越 编/2012-04-01

    url_none.png

    《教学成果奖配套教材:数据结构学习与实验指导》是《数据结构》(陈越主编,高等教育出版社2012年出版)的配套教材,围绕教材中的主要知识点设计27道“实验案例”和38道“实验项目”,并提供详细解答。第1章概要介绍了《教学成果奖配套教材:数据结构学习与实验指导》的特点和内容结构;第2章复习C语言的关键内容;第3章针对线性表的知识点设计应用问题;第4章围绕树的存储、重要性质与应用进行练习;第5章是针对散列表和经典哈希映射技术的应用;第6章涉及图的各种表示方法和相关算法;第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范苇;第8章给出的题目涉及多个知识点的综合应用,帮者深刻体会数据结构的灵活运用。《教学成果奖配套教材:数据结构学习与实验指导》可作为“数据结构”课程的参考用

    ¥15.26定价:¥140.39(1.09折)

    url_none.png

    《教学成果奖配套教材:数据结构学习与实验指导》是《数据结构》(陈越主编,高等教育出版社2012年出版)的配套教材,围绕教材中的主要知识点设计27道“实验案例”和38道“实验项目”,并提供详细解答。第1章概要介绍了《教学成果奖配套教材:数据结构学习与实验指导》的特点和内容结构;第2章复习C语言的关键内容;第3章针对线性表的知识点设计应用问题;第4章围绕树的存储、重要性质与应用进行练习;第5章是针对散列表和经典哈希映射技术的应用;第6章涉及图的各种表示方法和相关算法;第7章通过对各种类型的大规模排序问题的求解,帮助读者理解各种经典排序算法的特点和适用范苇;第8章给出的题目涉及多个知识点的综合应用,帮助读者深刻体会数据结构的灵活运用。《教学成果奖配套教材:数据结构学习与实验指导》可作为“数据结构”课程

    ¥15.38定价:¥138.53(1.12折)

    url_none.png

    《教学成果奖配套教材:数据结构学习与实验指导》是《数据结构》(陈越主编,高等教育出版社2012年出版)的配套教材,围绕教材中的主要知识点设计27道“实验案例”和38道“实验项目”,并提供详细解答。第1章概要介绍了《教学成果奖配套教材:数据结构学习与实验指导》的特点和内容结构;第2章复习C语言的关键内容;第3章针对线性表的知识点设计应用问题;第4章围绕树的存储、重要性质与应用进行练习;第5章是针对散列表和经典哈希映射技术的应用;第6章涉及图的各种表示方法和相关算法;第7章通过对各种类型的大规模排序问题的求解,帮助读者理解各种经典排序算法的特点和适用范苇;第8章给出的题目涉及多个知识点的综合应用,帮助读者深刻体会数据结构的灵活运用。《教学成果奖配套教材:数据结构学习与实验指导》可作为“数据结构”课程

    ¥15.38定价:¥138.61(1.11折)

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥15.74定价:¥28.30(5.57折)

    /2012-04-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥16.00定价:¥314.23(0.51折)

    何钦铭 等 著;陈越 编/2012-04-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥16.45定价:¥113.45(1.45折)

    /2012-04-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥16.90定价:¥40.20(4.21折)

    何钦铭 等 著,陈越 编/2012-04-01

    url_none.png

    本书是国外数据结构与算法分析方面的经典教材,使用卓越的Ja编程语言作为实现工具,讨论数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书将算法分析与*有效率的Ja程序的开发有机结合起来,深入分析每种算法,并细致讲解精心构造程序的方法,内容全面,缜密严格。第3版的主要更新如下:第4章包含AVL树删除算法的实现。第5章进行了全面修订和扩充,现在包含两种较新的算法——布谷鸟散列和跳房子散列。第7章包含基数排序的相关内容,并给出了下界证明。第12章增加了后缀树和后缀数组的相关材料,包括Karkkainen和Sanders的线性时间后缀数组构造算法。更新书中的代码,使用了Ja7中的菱形运算符。

    ¥17.59定价:¥226.64(0.78折)

    /2016-03-01

    url_none.png

    本书是国外数据结构与算法分析方面的经典教材,使用卓越的Ja编程语言作为实现工具,讨论数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书将算法分析与*有效率的Ja程序的开发有机结合起来,深入分析每种算法,并细致讲解精心构造程序的方法,内容全面,缜密严格。第3版的主要更新如下:第4章包含AVL树删除算法的实现。第5章进行了全面修订和扩充,现在包含两种较新的算法——布谷鸟散列和跳房子散列。第7章包含基数排序的相关内容,并给出了下界证明。第12章增加了后缀树和后缀数组的相关材料,包括Karkkainen和Sanders的线性时间后缀数组构造算法。更新书中的代码,使用了Ja7中的菱形运算符。

    ¥17.59定价:¥223.11(0.79折)

    /2016-03-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥18.00定价:¥222.56(0.81折)

    何钦铭 等 著;陈越 编/2012-04-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥19.45定价:¥219.60(0.89折)

    /2012-04-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥20.80定价:¥101.50(2.05折)

    何钦铭 等 著;陈越 编/2012-04-01

    url_none.png

    陈越编著的《数据结构(第2版)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养程序设计技能。本书第1章介绍了数据结构与算法的基本概念;第2章是对C语言关键内容的复习,为后续章节理解数据结构的实现做准备;第3章至第7章分别介绍了线性表、树、散列表、图、排序算法等经典数据结构与算法;最后在第8章通过对两个实际生活中提炼出的问题的解答,帮者更深刻地体会数据结构的应用。本书可作为高等学校计算机类专业“数据结构”课程的教材。

    ¥21.00定价:¥106.68(1.97折)

    /2016-06-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥21.50定价:¥53.85(4折)

    何钦铭 等 著,陈越 编/2012-04-01

    url_none.png

    导语_点评_推荐词

    ¥25.50定价:¥28.30(9.02折)

    陈越主编/2012-04-01

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮助读者理解各种经典排序算法的特点和适用范围;最后第8章给出

    ¥26.19定价:¥203.74(1.29折)

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮助读者理解各种经典排序算法的特点和适用范围;最后第8章给出

    ¥26.19定价:¥203.73(1.29折)

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮助读者理解各种经典排序算法的特点和适用范围;最后第8章给出

    ¥26.19定价:¥203.92(1.29折)

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥26.32定价:¥29.27(9折)

    何钦铭 等 著,陈越 编/2012-04-01

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范围;最后第8章给出的题

    ¥27.00定价:¥130.50(2.07折)

    url_none.png

    导语_点评_推荐词

    ¥28.10定价:¥33.00(8.52折)

    /2016-06-01

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范围;最后第8章给出的题

    ¥28.36定价:¥217.97(1.31折)

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范围;最后第8章给出的题

    ¥28.36定价:¥215.79(1.32折)

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范围;最后第8章给出的题

    ¥28.36定价:¥217.75(1.31折)

    url_none.png

    “数据结构”是计算机类专业重要的专业基础课之一,主要讲授数据的有效组织方法以及解决实际问题的各种经典算法。而经典算法的威力,往往是在处理大规模数据量时才真正体现。只有让学生动手解决规模较大的问题,才能帮助学生建立感性认识,更好地理解数据结构和算法存在的意义。《数据结构学习与实验指导(第2版)》第0章概要介绍了该书的特点和内容结构;第1章围绕时空复杂度分析与比较提供练习;第2章提供对C语言关键内容的复习性练习;第3章针对线性表的知识点设计应用问题进行练习;第4章围绕树的存储、重要性质与应用进行练习:第5章是对散列表和经典哈希映射技术的应用;第6章设计了对图的各种表示方法和相关算法的训练:第7章通过对各种类型的大规模排序问题的求解,帮者理解各种经典排序算法的特点和适用范围;最后第8章给出的题

    ¥28.36定价:¥217.80(1.31折)

    url_none.png

    陈越编著的《数据结构(第2版)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养程序设计技能。本书第1章介绍了数据结构与算法的基本概念;第2章是对C语言关键内容的复习,为后续章节理解数据结构的实现做准备;第3章至第7章分别介绍了线性表、树、散列表、图、排序算法等经典数据结构与算法;最后在第8章通过对两个实际生活中提炼出的问题的解答,帮者更深刻地体会数据结构的应用。本书可作为高等学校计算机类专业“数据结构”课程的教材。

    ¥28.36定价:¥255.33(1.12折)

    /2016-06-01

    url_none.png

    陈越编著的《数据结构(第2版)》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养程序设计技能。本书第1章介绍了数据结构与算法的基本概念;第2章是对C语言关键内容的复习,为后续章节理解数据结构的实现做准备;第3章至第7章分别介绍了线性表、树、散列表、图、排序算法等经典数据结构与算法;最后在第8章通过对两个实际生活中提炼出的问题的解答,帮者更深刻地体会数据结构的应用。本书可作为高等学校计算机类专业“数据结构”课程的教材。

    ¥28.36定价:¥221.80(1.28折)

    /2016-06-01

    url_none.png

    《*教学成果奖配套教材:数据结构》的主要任务是介绍并探讨有关数据组织、算法设计、时间和空间效率的概念及通用分析方法,帮助读者学会数据的组织方法和现实世界问题在计算机内部的表示方法,针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。 本书的特点是从实际应用问题出发,导出各种经典数据结构的定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例帮助读者增强对理论的感性认识,从而明白这些数据结构为什么存在,以及在什么情况下可以最好地解决什么样的问题。 本书提供了丰富的学习资源,包括源代码及配套电子课件、浙江大学提供的在线系统PAT、《数据结构学习与实验指导》等。读者可以通过使用这些学习资源随时检测自己的学习效果与编程能力。

    ¥28.47定价:¥28.47

    /2012-04-01

    展开全文
  • 伪代码文件为txt文件,其它所有的均为.c文件,不同于一些只提供无用链接不同。
  • 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用...
  • 这是数据结构第二C语言版)的教材pdf文档,可供初学者学习,答疑解惑
  • 这是中国大学mooc平台浙江大学的《数据结构与算法》的课程PPT
  • 数据结构课后习题答案参考,不记得是什么版本的了,但是每一章的答案都有,可以参考
  • 数据结构C语言版)(第2) 课后习题答案

    千次阅读 多人点赞 2019-12-05 18:25:08
    完整见附件。

    第1章 绪论

    1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

    答案:

    数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

    数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

    数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。

    数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’, ‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。

    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

    逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

    存储结构:数据对象在计算机中的存储表示,也称为物理结构。

    抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

    2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

    答案:

    例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。

    这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。

    即相同的逻辑结构,可以对应不同的存储结构。

    3.简述逻辑结构的四种基本关系并画出它们的关系图。

    答案:

    (1)集合结构

    数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。

    (2)线性结构

    数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。

    (3)树结构

    数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。

    (4)图结构或网状结构

    数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图形结构或网状结构。

    其中树结构和图结构都属于非线性结构。
    四类基本逻辑结构关系图

    4.存储结构由哪两种基本的存储方法实现?

    答案:

    (1)顺序存储结构

    顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。

    (2)链式存储结构

    顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。

    5.选择题

    (1)在数据结构中,从逻辑上可以把数据结构分成( )。

    A.动态结构和静态结构 B.紧凑结构和非紧凑结构

    C.线性结构和非线性结构 D.内部结构和外部结构

    答案:C

    (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。

    A.存储结构 B.存储实现

    C.逻辑结构 D.运算实现

    答案:C

    (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( )。

    A.数据具有同一特点

    B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致

    C.每个数据元素都一样

    D.数据元素所包含的数据项的个数要相等

    答案:B

    (4)以下说法正确的是(
    )。

    A.数据元素是数据的最小单位

    B.数据项是数据的基本单位

    C.数据结构是带有结构的各数据项的集合

    D.一些表面上很不相同的数据可以有相同的逻辑结构

    答案:D

    解释:数据元素是数据的基本单位,数据项是数据的最小单位,数据结构是带有结构的各数据元素的集合。

    (5)算法的时间复杂度取决于( )。

    A.问题的规模 B.待处理数据的初态

    C.计算机的配置 D.A和B

    答案:D

    解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。

    (6)以下数据结构中,(
    )是非线性数据结构

    A.树 B.字符串 C.队列 D.栈

    答案:A

    6.试分析下面各程序段的时间复杂度。

    (1)x=90;
    y=100;

    while(y>0)

    if(x>100)

    {x=x-10;y–;}

    else x++;

    答案:O(1)

    解释:程序的执行次数为常数阶。

    (2)for (i=0;
    i<n; i++)

    for (j=0;
    j<m; j++)

    a[i][j]=0;

    答案:O(m*n)

    解释:语句a[i][j]=0;的执行次数为m*n。
    在这里插入图片描述

    在这里插入图片描述

    第2章 线性表

    1.选择题

    (1)顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。

    A.110
    B.108 C.100 D.120

    答案:B

    解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。

    (2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。

    A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)

    B.在第i个结点后插入一个新结点(1≤i≤n)

    C.删除第i个结点(1≤i≤n)

    D.将n个结点从小到大排序

    答案:A

    解释:在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。

    (3) 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动
    的元素个数为(
    )。

    A.8 B.63.5 C.63 D.7

    答案:B

    解释:平均要移动的元素个数为:n/2。

    (4)链接存储的存储结构所占存储空间( )。

    A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

    B.只有一部分,存放结点值

    C.只有一部分,存储表示结点间关系的指针

    D.分两部分,一部分存放结点值,另一部分存放结点所占单元数

    答案:A

    (5)线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。

    A.必须是连续的 B.部分地址必须是连续的

    C.一定是不连续的 D.连续或不连续都可以

    答案:D

    (6)线性表L在(
    )情况下适用于使用链式结构实现。

    A.需经常修改L中的结点值 B.需不断对L进行删除插入

    C.L中含有大量的结点
    D.L中结点结构复杂

    答案:B

    解释:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。

    (7)单链表的存储密度(
    )。

    A.大于1 B.等于1 C.小于1 D.不能确定

    答案:C

    解释:存储密度是指一个结点数据本身所占的存储空间和整个结点所占的存储空间之比,假设单链表一个结点本身所占的空间为D,指针域所占的空间为N,则存储密度为:D/(D+N),一定小于1。

    (8)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( )。

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

    答案:A

    解释:当第一个有序表中所有的元素都小于(或大于)第二个表中的元素,只需要用第二个表中的第一个元素依次与第一个表的元素比较,总计比较n次。

    (9)在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动( )个元素。

    A.n-i B.n-i+1 C.n-i-1 D.I

    答案:B

    (10) 线性表L=(a1,a2,……an),下列说法正确的是( )。

    A.每个元素都有一个直接前驱和一个直接后继

    B.线性表中至少有一个元素

    C.表中诸元素的排列必须是由小到大或由大到小

    D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。

    答案:D

    (11) 创建一个包括n个结点的有序单链表的时间复杂度是( )。

    A.O(1) B.O(n) C.O(n2) D.O(nlog2n)

    答案:C

    解释:单链表创建的时间复杂度是O(n),而要建立一个有序的单链表,则每生成一个新结点时需要和已有的结点进行比较,确定合适的插入位置,所以时间复杂度是O(n2)。

    (12) 以下说法错误的是( )。

    A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低

    B.顺序存储的线性表可以随机存取

    C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活

    D.线性表的链式存储结构优于顺序存储结构

    答案:D

    解释:链式存储结构和顺序存储结构各有优缺点,有不同的适用场合。

    (13) 在单链表中,要将s所指结点插入到p所指结点之后,其语句应为( )。

    A.s->next=p+1; p->next=s;

    B.(*p).next=s; (*s).next=(*p).next;

    C.s->next=p->next; p->next=s->next;

    D.s->next=p->next; p->next=s;

    答案:D

    (14) 在双向链表存储结构中,删除p所指的结点时须修改指针( )。

    A.p->next->prior=p->prior;
    p->prior->next=p->next;

    B.p->next=p->next->next;
    p->next->prior=p;

    C.p->prior->next=p;
    p->prior=p->prior->prior;

    D.p->prior=p->next->next;
    p->next=p->prior->prior;

    答案:A

    (15) 在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是( )。

    A.p->next=q;
    q->prior=p; p->next->prior=q; q->next=q;

    B.p->next=q;
    p->next->prior=q; q->prior=p; q->next=p->next;

    C.q->prior=p;
    q->next=p->next; p->next->prior=q; p->next=q;

    D.q->prior=p;
    q->next=p->next; p->next=q; p->next->prior=q;

    答案:C

    2.算法设计题

    (1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。

    [题目分析]

    合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后

    [算法描述]

    void MergeList(LinkList &La,LinkList
    &Lb,LinkList &Lc)
    
    {//合并链表La和Lb,合并后的新表使用头指针Lc指向
    
      pa=La->next;  pb=Lb->next;    
    
       //pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
    
      
    Lc=pc=La;  //用La的头结点作为Lc的头结点
    
      
    while(pa && pb)
    
    {if(pa->data<pb->data){pc->next=pa;pc=pa;pa=pa->next;}
    
         //取较小者La中的元素,将pa链接在pc的后面,pa指针后移
    
        
    else if(pa->data>pb->data) {pc->next=pb; pc=pb;
    pb=pb->next;}
    
          //取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移
    
        
    else //相等时取La中的元素,删除Lb中的元素
    
    {pc->next=pa;pc=pa;pa=pa->next;
    
         
    q=pb->next;delete pb ;pb =q;
    
    }
    
         }
    
     pc->next=pa?pa:pb;    //插入剩余段
    
         delete Lb;            //释放Lb的头结点
    
    }  
    

    (2)将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。

    [题目分析]

    合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的表头结点之后,如果两个表中的元素相等,只摘取La表中的元素,保留Lb表中的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素依次摘取,链接在Lc表的表头结点之后。

    [算法描述]

    void MergeList(LinkList& La, LinkList& Lb, LinkList& Lc, ) 
    
    {//合并链表La和Lb,合并后的新表使用头指针Lc指向
    
      pa=La->next;  pb=Lb->next; 
    
    //pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
    
      Lc=pc=La; //用La的头结点作为Lc的头结点 
    
      Lc->next=NULL;
    
      while(pa||pb )
    
    {//只要存在一个非空表,用q指向待摘取的元素
    
        if(!pa) 
    {q=pb;  pb=pb->next;}
    
    //La表为空,用q指向pb,pb指针后移
    
        else if(!pb)  {q=pa; 
    pa=pa->next;} 
    
    //Lb表为空,用q指向pa,pa指针后移
    
        else if(pa->data<=pb->data)  {q=pa; 
    pa=pa->next;}
    
    //取较小者(包括相等)La中的元素,用q指向pa,pa指针后移
    
        else {q=pb; 
    pb=pb->next;}
    
    //取较小者Lb中的元素,用q指向pb,pb指针后移
    
         q->next = Lc->next;  Lc->next = q;   
    
    //将q指向的结点插在Lc 表的表头结点之后
    
        }
    
        delete
    Lb;             //释放Lb的头结点
    
    }   

    (3)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。

    [题目分析]

    只有同时出现在两集合中的元素才出现在结果表中,合并后的新表使用头指针Lc指向。pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,如果两个表中相等的元素时,摘取La表中的元素,删除Lb表中的元素;如果其中一个表中的元素较小时,删除此表中较小的元素,此表的工作指针后移。当链表La和Lb有一个到达表尾结点,为空时,依次删除另一个非空表中的所有元素。

    [算法描述]

    void Mix(LinkList& La, LinkList& Lb,
    LinkList& Lc) 
    
    {  pa=La->next;pb=Lb->next; 
    
    //pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
    
    Lc=pc=La; //用La的头结点作为Lc的头结点
    
    while(pa&&pb)
    
    {
    if(pa->data==pb->data)//交集并入结果表中。
    
       { pc->next=pa;pc=pa;pa=pa->next;
    
         u=pb;pb=pb->next;
    delete u;}
    
      else if(pa->data<pb->data) {u=pa;pa=pa->next; delete
    u;}
    
    else {u=pb; pb=pb->next; delete u;}
    
    }
    
    while(pa) {u=pa; pa=pa->next;
    delete u;}// 释放结点空间
    
    while(pb) {u=pb; pb=pb->next; delete
    u;}//释放结点空间
    
    pc->next=null;//置链表尾标记。
    
    delete Lb;  //释放Lb的头结点
    
      
    }
    

    (4)已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。

    [题目分析]

    求两个集合A和B的差集是指在A中删除A和B中共有的元素,即删除链表中的相应结点,所以要保存待删除结点的前驱,使用指针pre指向前驱结点。pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,如果La表中的元素小于Lb表中的元素,pre置为La表的工作指针pa删除Lb表中的元素;如果其中一个表中的元素较小时,删除此表中较小的元素,此表的工作指针后移。当链表La和Lb有一个为空时,依次删除另一个非空表中的所有元素。

    [算法描述]

    void Difference(LinkList& La, LinkList& Lb,int *n)
    
    {∥差集的结果存储于单链表La中,*n是结果集合中元素个数,调用时为0
    
    pa=La->next; pb=Lb->next;      
    
    ∥pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
    
      pre=La;          ∥pre为La中pa所指结点的前驱结点的指针
    
      while(pa&&pb)
    
    {if(pa->data<q->data){pre=pa;pa=pa->next;*n++;} 
    
    ∥ A链表中当前结点指针后移
    
    else if(pa->data>q->data)q=q->next;     ∥B链表中当前结点指针后移
    
        else
    {pre->next=pa->next;      ∥处理A,B中元素值相同的结点,应删除
    
             
    u=pa; pa=pa->next; delete u;}  
    ∥删除结点
    
    }
    
    }
    

    (5)设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。

    [题目分析]

    B表的头结点使用原来A表的头结点,为C表新申请一个头结点。从A表的第一个结点开始,依次取其每个结点p,判断结点p的值是否小于0,利用前插法,将小于0的结点插入B表,大于等于0的结点插入C表。

    [算法描述]

    void DisCompose(LinkedList A)
    
    {   B=A;
    
    B->next= NULL;    //B表初始化
    
      
      C=new LNode;//为C申请结点空间
    
        
    C->next=NULL;     //C初始化为空表
    
        
    p=A->next;        //p为工作指针
    
        
    while(p!= NULL)
    
       
     { r=p->next;      //暂存p的后继
    
           if(p->data<0)
    
            {p->next=B->next;
    B->next=p; }//将小于0的结点链入B表,前插法
    
           else {p->next=C->next;
    C->next=p; }//将大于等于0的结点链入C表,前插法
    
           p=r;//p指向新的待处理结点。
    
        
    }
    
    }
    

    (6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

    [题目分析]

    假定第一个结点中数据具有最大值,依次与下一个元素比较,若其小于下一个元素,则设其下一个元素为最大值,反复进行比较,直到遍历完该链表。

    ElemType Max (LinkList L ){
    
     if(L->next==NULL)
    return NULL;
    
     pmax=L->next;
    //假定第一个结点中数据具有最大值
    
     p=L->next->next;
    
     while(p
    != NULL ){//如果下一个结点存在
    
        if(p->data
    > pmax->data) pmax=p;//如果p的值大于pmax的值,则重新赋值
    
        p=p->next;//遍历链表
    
     }

    (7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

    [题目分析]

    从首元结点开始,逐个地把链表L的当前结点p插入新的链表头部。

    [算法描述]

    
    
    void 
    inverse(LinkList &L) 
    
    {// 逆置带头结点的单链表 L
    
       
    p=L->next;  L->next=NULL;
    
       
    while ( p) {
    
           
    q=p->next;    // q指向*p的后继
    
           
    p->next=L->next;
    
           
    L->next=p;       // *p插入在头结点之后
    
           
    p = q;
    
        }
    
    }
    
    

    (8)设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。

    [题目分析]

    分别查找第一个值>mink的结点和第一个值 ≥maxk的结点,再修改指针,删除值大于mink且小于maxk的所有元素。

    [算法描述]

    void delete(LinkList &L, int mink, int
    maxk) {
    
      
    p=L->next; //首元结点
    
       while
    (p && p->data<=mink)
    
          {
    pre=p;  p=p->next; } //查找第一个值>mink的结点
    
       if
    (p) 
    
    {while (p &&
    p->data<maxk)  p=p->next;
    
                          // 查找第一个值 ≥maxk的结点
    
         
    q=pre->next;  
    pre->next=p;  // 修改指针
    
         
    while (q!=p) 
    
            
    { s=q->next;  delete q;  q=s; } // 释放结点空间
    
       }//if
    
    }
    

    (9)已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change§,交换p所指向的结点和它的前缀结点的顺序。

    [题目分析]

    知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p结点,前驱结点,前驱的前驱结点,后继结点)六条链。

    [算法描述]

    
    
    void  Exchange(LinkedList p)
    //p是双向循环链表中的一个结点,本算法将p所指结点与其前驱结点交换。
    
    {q=p->llink;
    
     q->llink->rlink=p;   //p的前驱的前驱之后继为p
    
     p->llink=q->llink;   //p的前驱指向其前驱的前驱。
    
     q->rlink=p->rlink;   //p的前驱的后继为p的后继。
    
     q->llink=p;         
    //p与其前驱交换
    
     p->rlink->llink=q;   ∥p的后继的前驱指向原p的前驱
    
     p->rlink=q;         
    //p的后继指向其原来的前驱
    
    }//算法exchange结束。
    
    

    (10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

    [题目分析]

    在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。

    [算法描述]

    void  Delete(ElemType A[ ]int  n)
    
    //A是有n个元素的一维数组,本算法删除A中所有值为item的元素。
    
    {i=1;j=n;//设置数组低、高端指针(下标)。
    
     while(i<j)
    
      
    {while(i<j
    && A[i]!=item)i++//若值不为item,左移指针。
    
       
    if(i<j)while(i<j && A[j]==item)j--//若右端元素为item,指针左移
    
       
    if(i<j)A[i++]=A[j--]}
    
    
    

    第3章 栈和队列

    1.选择题

    (1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在( )种情况。

    A.5,4,3,2,1 .
    B.2,1,5,4,3
    C.4,3,1,2,5
    D.2,3,5,4,1

    答案:C

    解释:栈是后进先出的线性表,不难发现C选项中元素1比元素2先出栈,违背了栈的后进先出原则,所以不可能出现C选项所示的情况。

    (2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )。

    A.i
    B.n-i
    C.n-i+1
    D.不确定

    答案:C

    解释:栈是后进先出的线性表,一个栈的入栈序列是1,2,3,…,n,而输出序列的第一个元素为n,说明1,2,3,…,n一次性全部进栈,再进行输出,所以p1=n,p2=n-1,…,pi=n-i+1。

    (3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为( )。

    A.r-f B.(n+f-r)%n C. n+r-f D.(n+r-f)%n

    答案:D

    解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值可能为负数,所以需要将差值加上MAXSIZE(本题为n),然后与MAXSIZE(本题为n)求余,即(n+r-f)%n。

    (4)链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作( )。

    A.x=top->data;top=top->link; B.top=top->link;x=top->link;

    C.x=top;top=top->link; D.x=top->link;

    答案:A

    解释:x=top->data将结点的值保存到x中,top=top->link栈顶指针指向栈顶下一结点,即摘除栈顶结点。

    (5)设有一个递归算法如下

        int fact(int n)
         {	  //n大于等于0
         		if(n<=0) return 1;
        		 else return
         		n*fact(n-1);      
           }
    

    则计算fact(n)需要调用该函数的次数为( )。

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

    答案:A

    解释:特殊值法。设n=0,易知仅调用一次fact(n)函数,故选A。

    (6)栈在 ( )中有所应用。

    A.递归调用 B.函数调用 C.表达式求值 D.前三个选项都有

    答案:D

    解释:递归调用、函数调用、表达式求值均用到了栈的后进先出性质。

    (7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是(
    )。

    A.队列 B.栈 C. 线性表 D.有序表

    答案:A

    解释:解决缓冲区问题应利用一种先进先出的线性表,而队列正是一种先进先出的线性表。

    (8)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。

    A.2 B.3 C.4 D. 6

    答案:B

    解释:元素出队的序列是e2、e4、e3、e6、e5和e1,可知元素入队的序列是e2、e4、e3、e6、e5和e1,即元素出栈的序列也是e2、e4、e3、e6、e5和e1,而元素e1、e2、e3、e4、e5和e6依次进入栈,易知栈S中最多同时存在3个元素,故栈S的容量至少为3。

    (9)若一个栈以向量V[1…n]存储,初始栈顶指针top设为n+1,则元素x进栈的正确操作是( )。

    A.top++; V[top]=x; B.V[top]=x;top++;

    C.top–; V[top]=x; D.V[top]=x;top–;

    答案:C

    解释:初始栈顶指针top为n+1,说明元素从数组向量的高端地址进栈,又因为元素存储在向量空间V[1…n]中,所以进栈时top指针先下移变为n,之后将元素x存储在V[n]。

    (10)设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳。

    A.线性表的顺序存储结构 B.队列

    C. 线性表的链式存储结构 D. 栈

    答案:D

    解释:利用栈的后进先出原则。

    (11)用链接方式存储的队列,在进行删除运算时( )。

    A. 仅修改头指针 B. 仅修改尾指针

    C. 头、尾指针都要修改 D. 头、尾指针可能都要修改

    答案:D

    解释:一般情况下只修改头指针,但是,当删除的是队列中最后一个元素时,队尾指针也丢失了,因此需对队尾指针重新赋值。

    (12)循环队列存储在数组A[0…m]中,则入队时的操作为( )。

    A. rear=rear+1
    B. rear=(rear+1)%(m-1)
    C. rear=(rear+1)%m
    D.rear=(rear+1)%(m+1)

    答案:D

    解释:数组A[0…m]中共含有m+1个元素,故在求模运算时应除以m+1。

    (13)最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是( )。

    A. (rear+1)%nfront
    B. rear
    front
    C.rear+1front
    D. (rear-l)%n
    front

    答案:B

    解释:最大容量为n的循环队列,队满条件是(rear+1)%nfront,队空条件是rearfront。

    (14)栈和队列的共同点是( )。

    A. 都是先进先出 B. 都是先进后出

    C. 只允许在端点处插入和删除元素 D. 没有共同点

    答案:C

    解释:栈只允许在栈顶处进行插入和删除元素,队列只允许在队尾插入元素和在队头删除元素。

    (15)一个递归算法必须包括( )。

    A. 递归部分 B.
    终止条件和递归部分

    C. 迭代部分 D. 终止条件和迭代部分

    答案:B

    展开全文
  • 此课件为武汉理工大学信管专业教学所用课件!!
  • c语言版数据结构课后答案,方便大家学习数据结构
  • DShomework MOOC数据结构陈越/何钦铭)每周作业 完结撒花
  • 新世纪高等院校精品教材数据结构与算法分析(悦语言)摇 摇 摇 摇魏宝刚 陈 越 王申康 编著内容简介, 、 、 、 , 、 。本书描述了各种类型的数据结构 包括线性表 树 堆 图 以及查找 排序等算法 自始至终将数据结构...

    新世纪高等院校精品教材

    数据结构与算法分析

    (悦语言版)

    摇 摇 摇 摇

    魏宝刚 陈 越 王申康 编著

    内容简介

    , 、 、 、 , 、 。

    本书描述了各种类型的数据结构 包括线性表 树 堆 图 以及查找 排序等算法 自始至终将数据结构

    , , 。 悦

    的基本原理与算法分析紧密结合 强调了算法性能的重要性 并介绍了算法设计技术 主要以 语言描述算

    , , 、 。 。

    法 列举了大量的实例 便于在计算机上实际运行 分析各种算法 每章之后附有习题以备读者进一步练习

    、 、 , ,

    本书逻辑性强 内容新颖 全面 可以作为大专院校计算机专业的教材和参考书 也可供其它理工科专业

    学生和计算机工程技术人员参考。

    摇图书在版编目 (悦陨孕)数据

    摇 :悦 辕 , ,

    数据结构与算法分析 语言版 魏宝刚 陈越 王

    援— : ,圆园园源援愿

    申康编著 杭州 浙江大学出版社

    摇新世纪高等院校精品教材

    摇陨杂月晕苑鄄猿园愿鄄园猿愿园员鄄苑

    摇 援 援援援摇 援 援援援 援援援 援援援摇 援

    Ⅰ 数 Ⅱ ①魏 ② 陈 ③王 Ⅲ ①数据

    原 原 原 原

    结构 高等学校 教材②算法分析 高等学校 教材

    悦 原 原 原 摇 援栽孕猿员员援员圆

    ③ 语言 程序设计 高等学校 教材 Ⅳ

    摇 悦陨孕 (圆园园源) 园苑猿猿猿圆

    中国版本图书馆 数据核字 第 号

    摇 摇

    责任编辑 杜希武 钱欣平

    封面设计 俞亚彤

    出版发行 浙江大学出版社

    ( 猿愿 摇 猿员园园圆苑)

    杭州浙大路 号 邮政编码

    (耘鄄皂葬蚤造:扎怎责则藻泽泽岳皂葬蚤造援澡扎援扎躁援糟灶)

    ( :澡贼贼责:辕辕憎憎憎援扎躁怎责则藻泽泽援糟燥皂)

    网址

    摇摇 摇

    排 版 浙江大学出版社电脑排版中心

    摇摇 摇

    印 刷 德清第二印刷厂

    摇摇 摇苑愿苑皂皂伊员园怨圆皂皂摇员辕员远

    开 本

    摇摇 摇员苑援苑缘

    印 张

    摇摇 摇源缘源

    字 数 千

    摇圆园园源 愿 员 摇圆园园源 愿 员

    版 印 次 年 月第 版 年 月第 次印刷

    摇摇 摇园园园员—猿园园园

    印 数

    摇摇 摇陨杂月晕苑鄄猿园愿鄄园猿愿园员鄄苑辕栽孕·圆远员

    书 号

    摇摇 摇圆远援园园

    定 价 元

    摇摇

    展开全文
  • 目录第2章 数据结构实现基础2.1 引子2.2 数据存储基础2.2.1 数组2.2.2 类型定义```typedef```2.2.3 指针2.2.4 结构2.2.5 链表1. 单向链表的结构2. 单向链表的常见操作(1)插入结点(2)删除结点(3)单向链表的遍历...
  • 本人根据浙江大学陈越老师的课程,自己也动手写了些数据结构C语言实现,比较初级,拿出来和大家分享交流。
  • 关于什么是数据结构,官方没有统一的定义,陈越老师对于这个问题列举了3个(sartaj sahni,Clifford A.Shaffer,中文维基百科)描述,从中我们发现数据结构和算法息息相关。 然后陈越老师列举了以下3个
  • 0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据(略)最前面的m个数循环移至最后面的m个位置。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? ...
  • 二叉树及存储结构 解析: 解析:总共有六层,最大结点树为2^6-1=63,这是对于完美二叉树来说的,但是由于其第六层节点数为8,不为2^(i-1),i为第i层的序号i,即不为2^(6-1)=32,故不可能为63,总结点数要小于63...
  • 第一章:概述1.1 引子数据结构的概念:概念解读:代码讲解: 1.1 引子 数据结构的概念:  1. SartajSahni在其《数据结构、算法与应用》中定义:数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素...
  • 数据结构_浙大陈越

    2022-02-18 11:15:11
    1.1 什么是数据结构(4节共32:43) 1.2 什么是算法(3节共22:41) 1.3 应用实例:最大子列和问题(3节共20:02) 第二讲 线性结构(2:19:00)[何钦铭] 小白专场:多项式乘法与加法运算- C实现(3小节共27:43) 2.1 ...
  • 这个系列文章我将用纯c语言来实现严书上的内容。文章中所有代码在博主电脑上均能正常运行。ps:严蔚敏的数据结构是目前我读过的最恶心的有关技术类的书籍
  • MOOC中国大学数据结构陈越/何钦铭)每周C 语言作业答案
  • 作为一个零基础纯纯的小白,如何在两个月内入门,成为可以在各大题库砍小瓜切小菜的中手(不学数据结构成不了高手)?下面是本姥姥的纯干货实用攻略。第一步:每天勤洗手,保持身体健康,手指灵活。找到一台计算机,...
  • 先说答案建议先学C语言,掌握基本的语法基础后,再学数据结构与算法,C语言编程与数据结构和算法这两个完全是两个东西了。 学习数据结构和算法有一个很重要的前提,就是至少熟练掌握一门编程语言,编程语言掌握肯定...
  • 数据结构 C 语言实现之一元多项式的表示及相加 2 一元多项式的表示及相加 对于符号多项式的各种操作 实际上都可以利用线性表来处理 比较典型的是关于一元多项式的处理 在 数学上 一个一元多项式Pn x 可按升幂的形式...
  • In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the ...
  • 目录 第六章 图 1.选择题 2.应用题 (1)已知如下图所示的有向图,请给出: (2)已知如图6.28所示的无向网,请给出: ​ ...(1)分别以邻接矩阵和邻接表作为存储结构,实现以下图的基本操作: (2...
  • #include <stdio.h> #include <stdlib.h> //#include <string.h> #include <assert.h> #include <stdbool.h> #include <limits.h> typedef int distance;...dista
  • 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。...
  • 串的模式匹配(C语言数据结构

    千次阅读 2021-05-27 17:30:42
    串的模式匹配 给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 ...数据1:随机数据,String 长度为 105,Pattern 长度为 10; 数据2:随机数据,String 长度为 105,Pattern 长度为 102; 数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 525
精华内容 210
关键字:

数据结构c语言版陈越

数据结构 订阅