





定价:158元
印次:1-1
ISBN:9787302575122
出版日期:2021.04.01
印刷日期:2021.03.26
图书责编:龙启铭
图书分类:教材
本书共分8章。第1章是介绍数据结构和算法的基本概念和算法分析的简单方法,以及C语言编程的要点。本书既可作为普通大学计算机科学与技术专业和软件工程专业本科生学习数据结构与算法课程的教材,也可以作为计算机专业考研的辅导教材或其他计算机或软件考试的复习教材,还可以作为供从事计算机或软件系统开发的人员参考的学习资料。
殷人昆,清华大学计算机系教授,1985年赴日本国东京理科大学做访问学者,研究方向为软件工程过程的质量管理和软件产品的质量评价。主要教学工作为计算机系大学本科“数据结构”、“软件工程”和研究生“软件工程设计与技术”、“软件项目管理”课程负责人,主持教育部―微软精品课程“数据结构”的建设。曾与人合作或单独编写和出版教材20余部,其中,《数据结构》教材被评为教育部普通高等教育“十一五”国家级规划教材,并于2005年获“北京市精品教材”。曾在核心刊物和专业会议发表论文多篇,并参加或主持多项科研项母。
前 言 通常,“数据结构与算法”是所有从事计算机系统研究和应用、计算机应用软件开发的科技人员必须学习和掌握的一门课程,是研究用计算机进行信息表示和处理的学科。 在计算机系统和与计算机相关的应用软件系统(亦称为APP)中,信息的表示和组织直接关系到信息处理程序的效率。随着计算机的普及、信息范围的拓宽、信息量的增加,使得许多系统程序和应用程序的规模和复杂性增加。 一个“好”的计算机程序,应当具有以下几个特性: (1)正确性:即在给定条件下,输入合理的数据,程序运行的结果应是正确的,计算精确度应是满足预定要求的。 (2)健壮性:亦称鲁棒性,即在给定条件下,输入可能不合理的数据,程序应能做出正确的反应,包括检查输入的正确性,必要时能够自动纠正可能发生的错误。 (3)简单性:亦称程序的圈复杂度,即程序结构中分支、循环、子程序调用的总数越少越好;程序越简单,程序开发、修改越容易,运行的出错概率越小。 (4)高效性:亦称算法的时空效率,即算法的时间复杂度和空间复杂度越小越好,通常用程序规模n的大O表示O(n)来衡量。 (5)可读性:即算法或程序易读、易理解性。一个可读的程序应是简单的、模块化的、其接口应是显式的,即共享数据应该尽量通过接口传递,避免直接访问。 (6)结构性:即程序应是结构化的,仅使用标准的单入口、单出口的控制结构(顺序、分支、循环)编写程序,避免使用goto语句转来转去;信息结构尽量采用封装、信息隐蔽的原则实现对象化,使得错误局部化,从而使得程序易于编码、易于测试、易于修改。 要使数据结构和算法的设计达到以上要...
第1章 数据结构绪论 1
1.1 简单的编程问题 1
1.2 简单的算法设计 4
1.2.1 枚举法编程 4
1.2.2 递推法编程 8
1.2.3 递归法编程 11
1.2.4 迭代法编程 13
1.2.5 动态规划法编程 16
1.3 简单的算法分析 17
1.3.1 语句的执行频度 17
1.3.2 时间复杂度度量 18
1.3.3 有关算法分析的选择题 20
第2章 线性表 26
2.1 线性表的概念 26
2.1.1 线性表的定义 26
2.1.2 线性表的应用 26
2.2 顺序表 28
2.2.1 顺序表的结构 28
2.2.2 顺序表的基本操作 28
2.2.3 顺序表的相关算法 31
2.3 链表 42
2.3.1 单链表的结构 42
2.3.2 单链表的基本运算 42
2.3.3 单链表的相关算法 50
2.4 循环单链表 80
2.4.1 循环单链表的定义 80
2.4.2 循环单链表的基本运算 81
2.4.3 循环单链表的相关算法 86
2.5 双向链表 90
2.5.1 双向链表的定义与结构 90
2.5.2 双向链表的基本运算 90
2.5.3 双向链表的相关算法 93
2.5.4 异或双向链表 99
2.6 静态链表 105
2.6.1 静态链表的结构定义 105
2.6.2 静态链表的基本运算 105
2.7 线性表的应用实例 109
2.7.1 约瑟夫问题求解 109
2.7.2 ...