《数据结构与抽象:Java语言描述(原书第4版)》一练习

练习

1.说明程序清单1-3中给出的类PiggyBank的每个方法:说明方法的目的;描述它的参数;写前置条件、后置条件和方法头的伪代码。然后写一个用于这些方法的Java接口,包括javadoc风格的注释。
2.假定groceryBag是一个包,它被表示不同杂货名字的10个字符串填满了。写Java语句,计数groceryBag中"soup"的出现次数并全部删除。不要从包中删除任何其他的字符串。报告包中出现的"soup"的个数。groceryBag中可能不包含"soup"。
3.给定如练习2中所描述的groceryBag,对groceryBag进行操作groceryBag.toArray(),会有什么影响?
4.给定如练习2中所描述的groceryBag,写Java语句,创建这个包中的不同字符串的数组。即,如果"soup"在groceryBag中出现3次,则它在数组中应该仅出现一次。数组创建完成后,groceryBag的内容应该不变。
5.两个集合的并集是将它们的内容合并到一个新集合中。在ADT包的BagInterface接口中添加一个方法union,它返回由接收调用方法的包和方法参数的包的并得到的一个新包。包含对方法进行充分说明的足够的注释。
注意,两个包的并集可能含有重复项。例如,如果对象x在一个包中出现5次,在另一个包中出现2次,则在这两个包的并集中x出现7次。具体来说,假定bag1和bag2都是Bag对象,这里,Bag实现了BagInterface;bag1含有String对象a、b和c;而bag2含有String对象b、b、d和e。执行下列语句后

包everything中含有字符串a、b、b、b、c、d和e。注意,union不影响bag1和bag2的内容。
6.两个集合的交集是同时出现在两个集合中的项组成的新集合。即,它含有重复部分的项。在ADT包的BagInterface接口中添加一个方法intersection,它返回由接收调用方法的包和方法参数的包的交得到的一个新包。包含对方法进行充分说明的足够的注释。
注意,两个包的交集可能含有重复项。例如,如果对象x在一个包中出现5次,在另一个包中出现2次,则在这两个包的交集中x出现2次。具体来说,假定bag1和bag2都是Bag对象,这里,Bag实现了BagInterface。bag1含有String对象a、b和c;而bag2含有String对象b、b、d和e。执行下列语句后

包commonItems仅含有字符串b。如果b在bag1中出现2次,则commonItems将含有2个b,因为bag2也含有2个b。注意,intersection不影响bag1和bag2的内容。
7.两个集合的差集是在一个集合中删除第二个集合中也出现的项后剩余的项组成的新集合。在ADT包的BagInterface接口中添加一个方法difference,它返回由接收调用方法的包和方法参数的包的差得到的一个新包。包含对方法进行充分说明的足够的注释。
注意,两个包的差集可能含有重复项。例如,如果对象x在一个包中出现5次,在另一个包中出现2次,则在这两个包的差集中x出现3次。具体来说,假定bag1和bag2都是Bag对象,这里,Bag实现了BagInterface。bag1含有String对象a、b和c;而bag2中含有String对象b、b、d和e。执行下列语句后

包leftOver1中含有字符串a和c。执行下列语句后

包leftOver2中含有字符串b、d和e。注意,difference不影响bag1和bag2的内容。
8.写代码完成下列任务:考虑两个能含有字符串的包。一个包名是letters,含有多个单字符的字符串。另一个包是空包,名为vowels。每次从letters中删除一个字符串。如果字符串含有一个元音,则将它放入包vowels中;否则,丢弃这个串。在检查了letters中的所有字符串后,报告包vowels中的元音数,及包中每个元音的出现次数。
9.写代码完成下列任务:考虑3个能含有字符串的包。一个包名是letters,含有多个单字符的字符串。另一个包名为vowels,含有5个字符串,每一个是一个元音。第三个包是空包,名为consonants。每次从letters中删除一个字符串。检查该字符串是否在包vowels中。如果在,丢弃这个串;否则,将它放入包consonants中。在检查了letters中的所有字符串后,报告包consonants中的辅音数及包中每个辅音的出现次数。

项目

1.如1.5节所述,集合是一个不允许有重复值的特殊包。假定类Set实现了SetInterface。给定空集合,其对象是Set,且给定含有多个字符串的类Bag的一个对象,写客户语句,从给定的包创建一个集合。
2.假定桌上有一堆书。每本书太重太大,你只能拿走这堆书中最上面的一本。不能从其他书下拿走一本。类似地,可以在这堆书的最上面放另一本从而在这堆书中增加一本。不能在其他书下面增加一本。
如果仅用书名表示书,设计一个可以用来记录桌上书堆中的书的类。规范说明每个方法:说明方法的目的;描述它的参数;写方法头的伪代码。然后写一个用于书堆方法的Java接口。在代码中包括javadoc风格的注释。
3.环(ring)是项的集合(collection),它有一个指向当前项的引用。操作(称为advance)将引用指向集合(collection)中的下一项。当引用到达最后一项时,下一次advance操作将引用指回第一项。环还有得到当前项、添加一项及删除一项的操作。项添加的位置及删除的位置由你来定。
设计一个ADT来表示对象的环。说明每个方法:说明方法的目的;描述它的参数;写方法头的伪代码。然后写一个用于环方法的Java接口。在代码中包括javadoc风格的注释。
4.一盒(shoe)扑克牌中含有一些标准的卡牌。盒中的这些牌可以洗牌,然后一次打出一张。也可以计算盒中牌的张数。
当一把牌打完后,应该将所有的牌放回盒中并洗牌。有些纸牌游戏要求,当牌盒变空时,弃牌堆中的牌要放回盒中。然后重洗盒中的牌。在本例中,不是所有的牌都在盒中;有些牌被玩家拿着。
设计一个盒的ADT,假定你有类PlayingCard,你也应该说明它。不需要一个ADT纸牌,因为纸牌是牌张数为1的一个盒。
说明每个ADT操作;说明方法的目的;描述它的参数;写方法头的伪代码。然后写一个用于盒的方法的Java接口。在代码中包括javadoc风格的注释。
5.安装空调的一次投标包括公司名、设备描述、设计性能、设备价格及安装费用。
设计表示任意投标的一个ADT。然后设计另外一个ADT,表示投标集合。第二个ADT应该包含根据价格和性能查找投标的方法。还要注意,一个公司能投多个标,每个有不同的设备。
说明每个ADT操作;说明方法的目的;描述它的参数;写方法头的伪代码。然后写一个用于投标方法的Java接口。在代码中包括javadoc风格的注释。
6.一个矩阵是数值的一个矩形数组。可以将两个矩阵相加或相乘得到第三个矩阵。可以用一个矩阵乘上一个标量,可以转置矩阵。设计一个表示有这些操作的矩阵的ADT。
说明每个ADT操作;说明方法的目的;描述它的参数;写方法头的伪代码。然后写一个用于矩阵方法的Java接口。在代码中包括javadoc风格的注释。

自测题答案

2.不合法。两个方法有相同的签名。我们记得,方法的返回值类型不是签名的一部分。这些方法有相同的名字和参数列表。
3.合法。两个方法有不同的签名。它们是重载方法。

时间: 2024-07-29 10:10:16

《数据结构与抽象:Java语言描述(原书第4版)》一练习的相关文章

《分布式系统:概念与设计》一第3节 练习

前 言 在互联网和Web持续发展并且对我们社会的每个方面都产生影响的时候,这本教材的第5版问世了.本书的介绍性章节提到互联网和Web对诸多(如金融.商业.艺术.娱乐等)应用领域的影响以及对信息社会的普遍影响.它还强调了诸如Web搜索和多人在线游戏等应用领域中的需求.从分布式系统的角度出发,这些开发在应用的范围.多个现代系统所支持的工作负载和系统大小等方面正在对底层系统架构提出实质性的新需求.重要的趋势包括网络技术上不断增加的多样性和普遍性(包括不断增加的无线网络的重要性).移动和无处不在计算元素

《分布式系统:概念与设计》一1.2 分布式系统的例子

1.2 分布式系统的例子 本节给出能激发读者学习积极性的当代分布式系统的例子,用于说明分布式系统所扮演的无处不在的角色和相关应用的多样性. 如1.1节所提及的那样,网络无处不在,成为我们现在认为理所当然的日常服务(互联网和相关的万维网.Web搜索.在线游戏.电子邮件.社会网络.电子商务,等等)的基础.为了进一步说明这一点,可参考图1-1,它描述了一系列所选的关键商务或社会应用部门,强调了相关的分布式系统技术已公认或新出现的应用. 正如所看到的,分布式系统包含近些年许多最重要的技术发展,因此理解底

《PADS 9.5电路设计与仿真从入门到精通》——第一章 绪论 1.1 PCB的基本概念及设计工具

第一章 绪论 PADS 9.5电路设计与仿真从入门到精通 本章主要介绍PADS的基本概念及特点,包括PCB设计的一般原则.基本步骤.标准规范等.着重介绍了美国Mentor Graphics公司的PCB设计软件:PADS 9.5,包括了PADS 9.5的发展过程以及它的新特点.PADS 9.5是一款非常优秀的PCB设计软件,它具有完整强大的PCB绘制工具,界面和操作十分简洁,希望用户好好学习本书,以便更加方便地使用PADS 9.5软件. 1.1 PCB的基本概念及设计工具 PADS 9.5电路设计

《分布式系统:概念与设计》一练习

练习 1.1 列出能被共享的五种类型的硬件资源和五种类型的数据或软件资源,并举出它们在实际的分布式系统中发生共享的例子. 1.2 在不参考外部时间源的情况下,通过本地网络连接的两台计算机的时钟如何同步?什么因素限制了你描述的过程的准确性?由互联网连接的大量的计算机的时钟是如何同步的?讨论该过程的准确性. 1.3 考虑1.2.2节讨论的大型多人在线游戏的实现策略.采用单一服务器方法表示多个玩家游戏状态的好处是什么?这存在什么问题以及如何解决? 1.4 一个用户随身携带可以无线连网的PDA,来到一个

《分布式系统:概念与设计》一2.3.1 体系结构元素

2.3.1 体系结构元素 为了理解一个分布式系统的基础构建块,有必要考虑下面四个关键问题: 在分布式系统中进行通信的实体是什么? 它们如何通信,特别是使用什么通信范型? 它们在整个体系结构中扮演什么(可能改变的)角色,承担什么责任? 它们怎样被映射到物理分布式基础设施上(它们被放置在哪里)? 通信实体 上述前两个问题是理解分布式系统的关键:什么是通信和这些实体如何相互通信为分布式系统开发者定义了一个丰富的设计空间.它对从面向系统和面向问题的角度解决第一个问题是有帮助的. 从系统的观点,回答通常是

《分布式系统:概念与设计》一2.4.1 交互模型

2.4.1 交互模型 2.3节对系统体系结构的讨论表明分布式系统由多个以复杂方式进行交互的进程组成.例如: 多个服务器进程能相互协作提供服务,前面提到的例子有域名服务(它将数据分区并复制到互联网中的服务器上)和Sun的网络信息服务(它在局域网的几个服务器上保存口令文件的复制版本). 对等进程能相互协作获得一个共同的目标.例如,一个语音会议系统,它以类似的方式分布音频数据流,但它有严格的实时限制. 大多数程序员非常熟悉算法的概念--采取一系列步骤以执行期望的计算.简单的程序由算法控制,算法中的每一

《分布式系统:概念与设计》一3.1 简介

3.1 简介 要构建分布式系统所使用的网络,首先需要众多的传输介质,包括电线.电缆.光纤以及无线频道:然后需要一些硬件设备,包括路由器.交换机.网桥.集线器.转发器和网络接口:最后还需要软件组件,包括协议栈.通信处理器和驱动器.上述因素都会影响分布式系统和应用程序所能达到的最终功能和性能.我们把为分布式系统提供通信设施的软硬件组件称为通信子系统.计算机和其他使用网络进行通信的设备称为主机.结点则指的是在网络上的所有计算机或者交换设备.互联网是一个通信子系统,它为所有接入的主机提供通信服务.互联网

《分布式系统:概念与设计》一1.1 简介

1.1 简介 计算机网络无处不在.互联网也是其中之一,因为它是由许多种网络组成的.移动电话网.协作网.企业网.校园网.家庭网.车内网,所有这些,既可单独使用,又可相互结合,它们具有相同的本质特征,这些特征使得它们可以放在分布式系统的主题下来研究.本书旨在解释影响系统设计者和实现者的连网的计算机的特征,给出已有的可帮助完成设计和实现分布式系统任务的主要概念和技术.我们把分布式系统定义成一个其硬件或软件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统.这个简单的定义覆盖了所有可

《分布式系统:概念与设计》一第2章 系统模型

第2章 系统模型 本章提供三个重要且互补的解释方法,以便有效地描述和讨论分布式系统的设计:物理模型考虑组成系统的计算机和设备的类型以及它们的互连,不涉及特定的技术细节.体系结构模型是从系统的计算元素执行的计算和通信任务方面来描述系统:这里计算元素或是指单个计算机或是指通过网络互连的计算机集合.客户-服务器和对等模型是分布式系统中的两种最常使用的体系结构模型.基础模型采用抽象的观点描述大多数分布式系统面临的单个问题的解决方案.在分布式系统中没有全局时间,所以不同计算机上的时钟未必给出相同的时间.进

《分布式系统:概念与设计》一1.5 挑战

1.5 挑战 1.2节的例子试图说明分布式系统的范围,并提出在设计中出现的问题.在许多系统中,遇到了重大的挑战并且已经得到解决.随着分布式系统的应用范围和规模的扩展,可能会遇到相同的和其他的挑战.本节我们描述主要的挑战. 1.5.1 异构性 互联网使得用户能在大量异构计算机和网络上访问服务和运行应用程序.下面这些均存在异构性(即存在多样性和差别): 网络: 计算机硬件: 操作系统: 编程语言: 由不同开发者完成的软件实现. 虽然互联网由多种不同种类的网络组成(见图1-3),但因为所有连接到互联网