摘要: 1.3.30编写一个函数,接受一条链表的首结点作为参数,(破坏性地)将链表反转并返回结果链表的首结点。迭代方式的解答:为了完成这个任务,我们需要记录链表中三个连续的结点:reverse、first和second。在每轮迭代中,我们从原链表中提取结点first并将它插入到逆链表的开头。我们需要一直保持 阅读全文
posted @ 2018-10-25 14:25 修电脑的龙生 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1.3.29用环形链表实现Queue。环形链表也是一条链表,只是没有任何结点的链接为空,且只要链表非空则last.next的值为first。只能使用一个Node类型的实例变量(last)。答:import java.util.Iterator;public class QueueOfCircular 阅读全文
posted @ 2018-10-25 14:24 修电脑的龙生 阅读(496) 评论(2) 推荐(1) 编辑
摘要: 1.3.28用递归的方法解答上一道练习。public static int findMax(Node x,int maxValue){ if(x==null) return maxValue; if(maxValue<x.item) maxValue=x.item; return findMax(x 阅读全文
posted @ 2018-10-25 14:23 修电脑的龙生 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1.3.26编写一个方法remove(),接受一条链表和一个字符串key作为参数,删除链表中所有item域为key的结点。答:public insertAfter(Node first,String key){ Node x=new Node(); x.next=first; if(x.next!= 阅读全文
posted @ 2018-10-25 14:22 修电脑的龙生 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1.3.27编写一个max(),接受一条链表的首结点作为参数,返回链表中键最大的节点的值。假设所有键均为正整数,如果链表为空则返回0。public static int max(Node first){ if(first==null) return 0; Node x=first; int maxV 阅读全文
posted @ 2018-10-25 14:22 修电脑的龙生 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1.3.25编写一个方法insertAfter(),接受两个链表结点作为通用数,将第二个结点插入链表并使之成为第一个结点的后续结点(如果两个参数为空则什么也不做)。答:public insertAfter(Node x,Node y){ if(!(x==null || y==null)) y.nex 阅读全文
posted @ 2018-10-25 14:21 修电脑的龙生 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1.3.24编写一个方法removeAfter(),接受一条链表结点作为参数并删除该结点的后续结点(如果参数结点或参数结点的后续结点为空则什么也不做)。答:public removeAfter(Node x){ if(!(x==null || x.next==null)) x.next=x.next 阅读全文
posted @ 2018-10-25 14:20 修电脑的龙生 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1.3.23为什么下面这段代码和上一道题中的代码效果不同?x.next=t;t.next=x.next;答:第二行时x.next指向t,而t.next=x.next,说明t.next提向了t。 阅读全文
posted @ 2018-10-25 14:19 修电脑的龙生 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 1.3.22假设x是一条链表中的某个结点,下面这段代码做了什么?t.next=x.next;x.next=t;答:将结点t作为x的后继结点。 阅读全文
posted @ 2018-10-25 14:16 修电脑的龙生 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 1.3.21编写一个方法find(),接受一条链表和一个字符串key作为参数。如果链表中的某个结点的item域的值为key,则方法返回true,否则返回false。答:public boolean find(Node first,String key){ boolean result=false; 阅读全文
posted @ 2018-10-25 14:15 修电脑的龙生 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1.3.20编写一个方法delete(),接受一个int参数k,删除链表的第k个元素(如果它存在的话)。答:public void delete(int k){ Node x=first; int i=1; while(true) { if(i==k-1) { x=x.next; x.next=x. 阅读全文
posted @ 2018-10-25 14:13 修电脑的龙生 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1.3.19给出一段代码,删除链表的尾结点,其中链表的首结点为first.答:单链表的实现方式:Node x=first;while(x.next!=last) x=x.next;last=x;last.next=null; 阅读全文
posted @ 2018-10-25 14:11 修电脑的龙生 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 1.3.18假设x是一条链表的某个结点且不是尾结点。下面这条语句的效果是什么?x.next=x.next.next;答:删除x的后续结点。评:上面是书上的答案。如果是单链表x的后续结点的next域并没有置为null,说明x的后续结点并未完全与链表脱离关系。如果是双向链表在上述基础上还存在x.next 阅读全文
posted @ 2018-10-25 14:10 修电脑的龙生 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1.3.17为Transaction类完成练习1.3.16。 答:public static Transaction[] readTransactions(String name)import java.util.Date;public class Transaction{ private fina 阅读全文
posted @ 2018-10-25 14:09 修电脑的龙生 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1.3.16使用1.3.1.5节中的readInts()作为模板为Date编写一个静态方法readDates(),从标准输入中读取由练习1.2.19的表格所指定的格式的多个日期并返回一个它们的数组。答:public static SmartDate[] readDates(String name)p 阅读全文
posted @ 2018-10-25 14:08 修电脑的龙生 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 1.3.15编写一个Queue的用例,接受一个命令行参数k并打印出标准输入中的倒数第k个字符串(假设标准输入中至少有k个字符串)。答:public class test{ public static void main(String[] args) { Queue<String> q=new Que 阅读全文
posted @ 2018-10-25 14:04 修电脑的龙生 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 1.3.14编写一个类ResizingArrayQueueOfStrings,使用定长数组实现队列的抽象,然后扩展实现,使用调整数的方法突破大小的限制。答:用例数据:0123456789入队,出队时的效果:public class ResizingArrayQueueOfString{ privat 阅读全文
posted @ 2018-10-25 14:03 修电脑的龙生 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 1.3.13假设某个用例程序会进行一系列入列和出列的混合队列操作。入列操作会将整数0到9按顺序插入队列;出列操作会打印出返回值。下面哪种序列是不可能产生的?a. 0 1 2 3 4 5 6 7 8 9b. 4 6 8 7 5 3 2 9 0 1c. 2 5 6 7 4 8 9 3 1 0d. 4 3 阅读全文
posted @ 2018-10-25 14:02 修电脑的龙生 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1.3.12编写一个可迭代的Stack用例,它含有一个静态的copy()方法,接受一个字符串的栈作为参数,并返回该栈的一个副本。注意:这种能是迭代器价值的一个重要体现,因为有了它我们无需改变基本API就能够实现这种功能。答:public class test{ public static void 阅读全文
posted @ 2018-10-25 14:00 修电脑的龙生 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 1.3.11编写一段程序EvaluatePostfix,从标准输入中得到一个后序表达式,求值并打印结(将上一程序中得到的输出用管道传递给这一段各程序可以得到和Evaluate相同的行为)。答: public class EvaluatePostfix{ public static void main 阅读全文
posted @ 2018-10-25 13:53 修电脑的龙生 阅读(211) 评论(0) 推荐(0) 编辑