C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf

所需积分/C币:37 2019-01-08 01:34:26 147.19MB PDF
59
收藏 收藏
举报

这本经典、畅销的数据结构教材详细介绍了数据抽象的基础知识,强调作为面向对象方法基础原理的规范和实施之间的区别。书中使用的软件工程原则和概念以及UML图便于增强学生的理解。 ◆ 详细介绍了数据抽象,强调规范和实现之间的区别 ◆ 广泛介绍了各种面向对象的编程技术 ◆ 重点是核心的数据结构,而不是非必要的C++语言语法 ◆ 说明了类和ADT在问题解决过程中的作用 ◆ 诠释了ADT的主要应用,如查找航班图、事件驱动的模拟和八皇后问题 ◆ 大部分章节中的例子都使用了标准模板库(STL) ◆ 介绍了递归 ◆ 附录中提供了基本的C++语法,以帮助学生从其他语言转换为C++ 第1章 数据抽象:墙 1 1.1 面向对象的概念 2 1.1.1 面向对象分析与设计 2 1.1.2 面向对象解决方案的特征 3 1.2 获得更好的解决方案 4 1.2.1 内聚 5 1.2.2 耦合 5 1.3 规范 6 1.3.1 操作契约 7 1.3.2 特殊情况 8 1.3.3 抽象 9 1.3.4 信息隐藏 10 1.3.5 最小且完整的接口 11 1.4 抽象数据类型 12 1.4.1 设计ADT 14 1.4.2 涉及其他ADT的ADT 17 1.5 ADT包 18 1.5.1 确定行为 18 1.5.2 指定数据和操作 19 1.5.3 ADT的模板接口 22 1.5.4 使用ADT包 24 C++片段1 C++类 29 C1.1 待解决的问题 30 C1.1.1 私有数据字段 31 C1.1.2 构造函数和析构函数 32 C1.1.3 方法 32 C1.1.4 防止编译错误 33 C1.2 实现解决方案 34 C1.3 模板 35 C1.4 继承 37 C1.4.1 基类和派生类 38 C1.4.2 重写基类方法 40 C1.5 虚方法和抽象类 42 C1.5.1 虚方法 42 C1.5.2 抽象类 43 第2章 递归:镜子 45 2.1 递归解决方案 46 2.2 返回值的递归 48 2.2.1 递归值函数:n的阶乘 49 2.2.2 箱式跟踪 52 2.3 执行动作的递归 55 2.4 递归与数组 62 2.4.1 逆置数组项 63 2.4.2 折半查找 64 2.4.3 查找数组中的最大值 68 2.4.4 查找数组中第k个最小值 69 2.5 组织数据 71 2.6 更多示例 75 2.6.1 Fibonacci数列(兔子繁殖) 75 2.6.2 组织游行队伍 78 2.6.3 从n个事物中选出k个 79 2.7 递归和效率 81 第3章 基于数组的实现 91 3.1 办法 92 3.1.1 核心方法 93 3.1.2 使用大小固定的数组 93 3.2 ADT包的基于数组的实现 94 3.2.1 头文件 95 3.2.2 定义核心方法 96 3.2.3 测试核心方法 98 3.2.4 实现更多方法 101 3.2.5 删除项的方法 103 3.2.6 测试 106 3.3 在实现中使用递归 107 3.3.1 getIndexOf方法 107 3.3.2 getFrequencyOf方法 108 C++片段2 指针、多态和内存分配 113 C2.1 变量的内存分配和方法的前期绑定 114 C2.2 需要解决的问题 115 C2.3 指针与程序的自由存储 116 C2.3.1 释放内存 118 C2.3.2 避免内存泄漏 119 C2.3.3 避免悬挂指针 122 C2.4 虚方法和多态 124 C2.5 数组的动态分配 126 第4章 基于链表的实现 129 4.1 预备知识 130 4.2 ADT包的基于链表的实现 133 4.2.1 头文件 134 4.2.2 定义核心方法 135 4.2.3 实现更多方法 138 4.3 在基于链表的实现中使用递归 143 4.4 测试多个ADT实现 145 4.5 比较基于数组的实现和基于链表的实现 148 第5章 作为问题求解技术的递归 155 5.1 定义语言 156 5.1.1 语法知识基础 156 5.1.2 两种简单的语言 158 5.2 代数表达式 160 5.2.1 代数表达式的类型 160 5.2.2 前缀表达式 162 5.2.3 后缀表达式 166 5.2.4 完全括号化表达式 168 5.3 回溯 168 5.3.1 查找航线 168 5.3.2 八皇后问题 173 5.4 递归和数学归纳法的关
TP3120 ¨1232 国外计算机科学经典教材 C++数据抽象和问题求解 (第6版) Frank m. carrano [美] 著 Timothy Henry 景丽 译 明牌了大学因 望贡较 03002194657 清华大学出版社 京 北京市版权局著作权合同登记号图字:01-20124745 Authorized translation from the English language edition, entitled Data Abstraction Problem Solving with C++: Walls and Mirrors, Sixth Edition, 978-0-13-292372-9 by Frank M. Carrano, Timothy Henry, published by Pearson Education, Inc, publishing as Addison-Wesley, Copyright 2013 All Rights Reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education. Inc CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD., and TSINGHUA UNIVERSITY PRESS Copyright C 2013 本书封面贴有 Pearsonε ducation(培生教育出版集团)防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-6278298913701121933 图书在版编目C|P数据 C艹+数据抽象和问题求解(第6版)/(美)卡拉拉( Carrano,F.M.),(美)亨利 Henry,T.)著;景丽译 北京:清华大学出版社,2013 书名原文: Data abstraction& Problem Solving with C++: Walls and mirrors, Sixth edition (国外计算机科学经典教材) ISBN978-7-302-33599-3 I.①C…Ⅱ.①卡…②享…③景…Ⅲ.①C语言一程序设计一教材Ⅳ.①TP312 中国版本图书馆CIP数据核字(2013)第203910号 责任编辑:王军于平 装帧设计:牛艳敏 责任校对:邱晓玉 责任印制:刘海龙 出版发行:清华大学出版社 atih:http://www.tup.comcn,http://www.wgbook.com 地址:北京清华大学学研大厦A座 邮编:100084 社总机:010-62770175 邮购:010-62786544 投稿与读者服务:010-62776969,Service@tup.tsinghua.edu.cn 质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn 印装者;北京密云胶印厂 经销:全国新华书店 开本:185mm×260mm 印张:50 字数:1376千字 版次:2013年11月第1版 印次:2013年11月第1次印刷 印数:1~3000 定价:99.80元 产品编号:049921-01 致 谢 本书由 Paul helman和 Robert vero最初的 intermediate Problem Solving and data Structure:als md mirrors( Benjamin/Cummings Publishing Company,lnc,1986)演化而来。 Helman和vero教授弓 入了两个形象的类比墙和镜子),让我们更方便地讲授(以及学习)计算机科学。本书建立在他们的组 织框架之上,并添加了技术性和文本性的内容、示例、图片以及练习题。 我们衷心感谢下面的审读者,感谢他们仔细阅读前一个版本并给出了公正的评论以及建议,这 使得这一版本得到了很大的改进,他们是: Andrew Danner Swarthmore College Karla S. Fant-Portland State University Max Fomitchev-Zamilov-Penn State University Mark Van Gorp Johnson County Community College Sarah Gothard--Wright State University Ranette H. Halverson Midwestern State University Shih-His LiuCalifornia State University Jie Hu Meichsner-St Cloud State University Douglas Niehaus University of Kansas Daniel Nohl--Benedictine University Nouhad J. Rizk--University of Houston Garht O. Sorenson-Snow College Xiaohui Yuan-University of North Texas Chao zhao Cameron University 还要特别感谢 Pearson Education的支持团队长时间地修订本书,他们是: Tracy Johnson、 Carole Snyder、Bob- engelhardt以及 Jeff Holcomb。我们的文字编辑 Rebecca Pepper确保了本书的版式整洁 完善,语法正确无误。 Nesbitt Graphics的 Rose Kernan对本书的制作进行了指导。 Steven j .holtz的特别关心使得本书的前一版本得到了很大的提高,他在 Minnesota duluth大学 从事教学。 Paul Nagin和 Janet prichard为本书的前一个版本提供了有用的材料,他们的贡献延续到 这个版本。 许多人对于 Walls and Mirrors的前一版本的不同进展阶段提供了建议。他们的评论非常有用, 在此表示感谢。按照字母顺序,他们分别是 Karl Abrahamson、 Stephen Alberg、 Ronald Alferez、iki Aan、 Jihad almahayni、 James ames、 Claud W. Anderson、 Andrew azzinaro、 Tony Batching、 Don bailey N. Dwight Barnette、 Jack beidler、 Wolfgang W Bein、 Sto bell, David Beard、 Brian Bershad、 John Balck、 前《言 欢迎阅读《C++数据抽象和问题求解》的第6版。在第1版出版之后,我们在使用面向对象的 C艹讲授数据抽象的时候获得了许多经验。这个版本体现了这些经验,此外还包含了从教师以及学 生那里收到的意见和建议。 很高兴向大家介绍另一位作者 Timothy Henry博土,他也是我在 Rhode island大学的同事。我们 起对本书作了必要的修订,让本书展现出新的面貌。我们的目标是让学生在数据抽象、面向对象 编程以及现代问题求解的技术方面打下良好的基础。本书所有的C++代码都关注安全编程技术,并 且遵循C++11标准。 我们希望您能够很愉快地阅读本书。与在您之前的许多其他人一样,您可以持续高效地学习(或 者讲授)数据结构。 联系我们 Walls and Mirrors仍然在发展。我们欢迎您提出意见、建议以及修正。下面是我们的联系方法: E-mail acm. org .Facebookwww.facebook.com/makingitreal Twitter: twitter. com/Fank M carrano Blog: frank-m-carrano. com/makingitreal 学习注意事项 本书讲述多种组织数据的方法,从而使得应用程序能够高效地访问并操纵数据。这些话题是将 来学习计算机科学的基础,创建复杂并且可靠的软件需要这些基础知识。无论您喜欢设计视频游戏 还是自动控制的外科手术软件,数据结构的学习都是至关重要的。即使您现在没有学习本书的全部 内容,将来也很可能会遇到相关的问题。我们希望您能够很愉快地阅读本书,并且希望本书能成为 您将来课程的有用参考工具。 墙和镜子代表两类基础的问题求解技术,这两种技术贯穿本书。数据抽象将模块的实现细节与 程序的其他部分分离并隐藏,就像墙将您与邻居分离并隐藏样。递归是一种通过重复解决同类更 小问题来解决问题的技术,就像两面相对的镜子中的镜像越来越小一样。 请您一定要阅读前言的其余部分,以查看对您的学习有帮助的特性。为了帮助您学习本书以及 考试复习,我们在书中包含了学习助手,例如视频教程( VideoNote)、 checkpoint问题以及答案、注释、 C++数据抽象和问题求解(第6版) Richard Botting、 Wolfin Brumley、 Daryl Car、 Philip carrigan、 Stephen Clamage、 Michael Clancy、 David Clayton、 Michael Cleon、 Chris Constantino、 Shaun Cooper、 Sarp Arda Coskun、 Charles Denault Vincent j. Dipippo、 Suzanne Domey、 Colleen dunn、 Carl Eckberg、 Sebastian elbaum、 Matthew Evett Karla Steinbrugge Fant、 Caroline Fell, Jean Foltz、 Mike Fulford、 Susan Gauch、 Martin Gander、Sr.、 Marguerite Hafen、 randy Hale、 George Hamer、 Judy Hankins、 Jean Harnett, Andrew Hayden、 Michael hayden、 Sarah Hayden、 Lisa hellerstein、 Lasse hellvig、 karsten henckel、 Lesly Hershman、 Mary lou Hines、 Michael Hirsch、 Jack Hodges、 Larry M. Holt、 Stephanie、 Horoschak、 Lily Hou、 John hubbard、 Tom Irdy、 Kris Jensen、 Thomos Judson、 Edwin j.Kay、 Laura Kenney、 Roger King、 Ladislav Kohout Jim LaBonte、 Jean lake、 Janusz laski、 Elaine lavallee、 Sally Lawrence、 Cathie Leblanc、 Greg Lee、 Urban Lejeune、 Matt LIcklider、 Adam Lindstrom、 John M Linebarger、 Marilyn Lloyd、 Ken lord、Paul Luker、 Ethan mallove、 Manisha Mande、 Pierre- Amul de marneffe、 John Marsaglia、 Tim martin、Jane Wallace Mayo、 Mark mccormick、 Dan mccracken、 ivan mcdougal、 Shirley McGuire、 Sue medeiros、 Waleed meleis、 Carol melville、 Dalin michael、 James r.Milr、 Jim miller.、 Guy Mills、 Rameen Mohammadi、 Cleve Moler、 Narayan Murthy、 David naf、 Paul Nagin、 Abhaya Nayak、 Rayno niemi、 Debbie noonan、 John O Donnell, Andrew Oldroyd、 Larry olsen、 Raymond L Paden、 Roy Pargas、 Brenda C. Parker、 Thaddeus f. Pawlicki、 Keith Pierce、 Gary Pollock、 Records、 Stuart Regis、 Mateen Rizki、 J D. robertson、 Daniel rosenkrantz、 Robert A rossi、 Jerry roth、 John Rowe、 Michael E. Rupp、 Sharon Salveter、 Charles saxon、 Chandra Sekharan、 Linda shapiro、 Yujian Sheng、 Mary Shields、Ren- Ben shiu Dmitri Sobodin、 Ronnie smith、 Carl spinola、 Richard Snodgrass、 Neil Snyder、 Ken sousa、Chis Spannabel、 Paul Spirakis、 Clinton Staley、 Matt Stallman、 Mark stehlick、 Benjamin Chomp、 Harriet Taylor、 David Teague、 Virginia Teller、 David Tetreault、 Hans-Joerg Tiede、 Lindsey Triebel、 Dwight Tuinista、 John Tuner、 Karen Van Route、 Robert vincent、 Susan wallace、 James e. Warren、 Xiaoqiao Wei、 Joyce wels、 Jerry Weltman、 Nancy Wiegand、 Alicia williams、 Howard williams、 Bard wilson、 James wirth、 Wally Wood、 Kathie Yerion、 Salih Yurttas、 Wu Yusong、 Rick Zaccone、 Alan Zaring 最后,我们要感谢家人以及朋友Doug、Ted、 Vander、 Nancy、Sue、Tom、 Joanne、Tia、 Bobby、 Lorraine和 Marge,感谢给予我们计算机之外的生活 感谢所有人! F.M. C TH 前言 续表) 第14章 队列和优先队列的实现 C++片段5 运算符重载和友元访问 第15章 树 第16章 树的实现 C++片段6 迭代器 第17章 第18章 字典及其实现 平衡査找树 第20章 第21章 外部存储中的数据处理 C++片段7 标准模板库 附录A 回顾C++基础 编程中的重要主题 附录C 统一建模语言 附录D 软件生命周期 附录E 数学归纳法 算法验证 附录G C++文件基础 附录H C++头文件和标准函数 附录I C++文档系统 ASCI字符代码 附录K 针对Java编程人员的C++知识 附录L 针对 Python编程人员的C++知识 目录 术语表 checkpoint问题的答案 新内容 这一版本对于前面的版本作出了重大修改,但是本书仍然致力于改进教学方式从而使得入门层 次的学生能够理解书中的材料。尽管所有的内容看起来都像是新的,但是您会发现前面版本中您喜 欢的内容仍然存在。初看上去,本书具有更多(但是更短章和新的C+片段。下面对此详细讲述。 内容安排本书的第1章变短了,关注抽象数据类型(ADI)的规范。在讨论了普遍意义上的问 题求解、良好的编程实践以及ADT之后,我们指定了一个简单的ADT包。我们以安全的方式 在C艹+模板接口中定义了包的操作,并且将原先章节中的部分内容放到了附录 通过将包作为第一个介绍的ADT,使得学生可以理解比较困难的链表话题。在链表的开头添加 C++数据抽象和问题求解(第6版) 编程窍门、章节内容小结以及术语表。为了在编程的时候提供帮助,附录以及书末包含了C++参考 资料。您应该阅读前言后面“增强学习的特性”部分给出的特性列表。 本书假定您具有基本的C++知识。有些读者或许需要回顾这一语言,有些读者可能是C++初学 者,这些读者都可以参考本书的附录。本书的章节中间添加了C艹片段,用于讲述C艹+类以及其他 相关的语言特性,这些片段并不要求您已经知道这些话题。我们假定读者没有使用递归函数的经验, 因此在第2章和第5章讲述递归函数。 您可以获取本书中所有的C艹代码。在前言的后面,补充材料说明将告诉您如何获取这些文件 Ⅴ denoTe以及其他在线文档。 本书组织结构 本书在某个时刻只关注一个概念,其内容的学习具有一定的灵活性,此外还清楚地说明了抽象 数据类型(也就是ADT)的规范和实现之间的不同。通过这种方式组织安排话题的进度,使得本书的 教与学都相对容易。为了达到这一目标,我们将这些内容划分为21章。大多数章节关注ADT的规 范以及使用,或者ADT的不同实现。您可以在理解了ADT的规范之后学习其实现,也可以在考虑 任何实现之前学习ADT的规范和使用。本书的组织方式允许您以自己喜欢的方式选择话题顺序。 内容一览表 下面的列表显示了本书的总体布局,稍后将进一步逐章讲述。注意灰色高亮部分可以在线获取。 第1章 数据抽象:墙 C++片段1 C++类 第2章 递归:镜子 第3章 基于数组的实现 C+片段2 指针、多态和内存分配 第4章 基于链表的实现 第5章 作为问题求解技术的递归 6 C++片段3 异常 第7章 实现ADT栈 第8章 列表 第9章 实现列表 第10章 算法的效率 第11章 排序算法及其效率 C+片段4 类关系和重用 第12章 有序表及其实现 第13章 列和优先队列 前言 示例一些用来说明新概念的示例。 checkpoint问题这些问题贯穿每一章,与课文相结合来强调刚讲述的概念。这些 checkpoint问题帮助读者理解内容,因为要求读者停下来并做出反应。这些问题的答 案在线提供。 Videonote在线教程以动态形式而不是静态文本形式提供另外的教学 注释“注释”部分的简要说明可以帮助您复习内容或者查找特定内容。 本章小结每一章的结尾都有关键思想列表,总结本章讲述的内容。 术语表本书讲述的所有术语都可以在线获取。 练习题和编程问题通过解决每章结尾的练习题和编程问题可以进行进一步的训 练。遗憾的是,我们无法向读者提供练习题和编程问题的答案,哪怕读者不是登记 入学的学生。只有选用本书的教师可以从出版商那里获得部分答案。对于练习题和 编程问题,如果需要帮助请联系您的教师。 获取教师资源和学生资源 下面的内容可以在出版商的网站www.pearsohighered.com/carrano获取: 书中出现的C+代码 本书出版后被发现的所有错印内容的链接 其他在线内容的链接(后面讨论) 教师资源 下面的受保护材料对于采用了本书的教师来说是可以使用的。登录 Pearson的教师资源中心后, 可以从www.pearsohighered.com//carrano获取: Power Point讲义 题库 教师题解手册 本书中的图片

...展开详情
试读 127P C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享王者

关注 私信
上传资源赚钱or赚积分
最新推荐
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf 37积分/C币 立即下载
1/127
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第1页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第2页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第3页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第4页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第5页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第6页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第7页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第8页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第9页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第10页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第11页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第12页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第13页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第14页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第15页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第16页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第17页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第18页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第19页
C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf第20页

试读结束, 可继续阅读

37积分/C币 立即下载