自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

photograph

小白程序员的成长之路(看到错误或者有好的建议求求你们告诉我)

  • 博客(14)
  • 收藏
  • 关注

原创 算法-第四版-练习1.3.44

题目文本编辑的缓冲区。为文本编辑器的缓冲区设计一种数据类型并实现表1.3.13中的API。表1.3.13 文本缓冲区的API public class Buffer   Buffer() 创建一个空缓冲区 void insert(char c) 在光标位置插入一个字符c char delete() 删除并返回光标位置的字符 void left(in...

2018-08-10 22:24:44 413

原创 算法-第四版-练习1.3.43(更好的解答!!!)

题目文件列表。文件夹就是一列文件和文件夹的列表。编写一个程序,从命令行接受一个文件夹名作为参数,打印出该文件夹下的所有文件并用递归的方式在所有子文件夹的名下(缩进)列出其下的所有文件。提示:使用队列,并参考java.io.File。思路通过判断print函数调用的次数来判断文件或文件夹的深度。注:这次使用了队列==!。代码package Chap1.$3;import...

2018-08-10 18:51:23 331

原创 算法-第四版-练习1.3.43

题目文件列表。文件夹就是一列文件和文件夹的列表。编写一个程序,从命令行接受一个文件夹名作为参数,打印出该文件夹下的所有文件并用递归的方式在所有子文件夹的名下(缩进)列出其下的所有文件。提示:使用队列,并参考java.io.File。思路通过判断文件或文件夹的位置中含有分隔符的多少来判断深度,并实现缩进。用isDirectory()方法即可判断一个file是不是文件夹。注:解答中并未...

2018-08-10 18:12:08 173

原创 算法-第四版-练习1.3.39

题目环形缓冲区。环形缓冲区,又称为环形队列,是一种以定长为N的先进先出的数据结构。它在进程间的异步数据传输或记录日志文件时十分有用。当缓冲区为空时,消费者会在数据存入缓冲区前等待;当缓冲区满时,生产者会等待将数据存入缓冲区。为RingBuffer设计一份API并用(回环)数组将其实现。思路没有实现等待-唤醒机制;实现环形队列时,如果hi指向队首,lo指向队尾,当hi和lo相等时,无法判...

2018-08-10 15:22:12 340

原创 算法-第四版-练习1.3.38解答

题目删除第k个元素。实现一个类并支持表1.3.13中的API:表1.3.12 泛型一般队列的API public class GeneralizedQueue<Item>   GeneralizedQueue() 创建一条空队列 boolean isEmpty() 队列是否为空 void insert(Item x) 添加一个元素 It...

2018-08-10 10:56:41 339

原创 算法-第四版-练习1.3.42解答

题目复制栈。为基于链表实现的栈编写一个新的构造函数,使以下代码Stack<Item> t=new Stack<Item>(s);得到的t指向栈s的一个新的独立的副本。思路因为栈是后入先出,所以在复制栈的时候,要声明一个中转栈来实现翻转原来的栈,再把中转栈里的元素每个都push到原来的栈和新栈。也可以使用实现迭代器的Stack的foreach方法(fore...

2018-08-10 09:48:29 224

原创 算法-第四版-练习1.3.41解答

题目复制队列。编写一个新的构造函数,使以下代码Queue<Item> r=new Queue<Item>(q);得到的r指向队列q的一个新的独立的副本。可以对q或r进行任意入列或出列的操作但它们不会相互影响。提示:从q中取出所有的元素再将它们插入q和r。思路对q进行q.sizez()次dequeue(),将每一次出列的item再插入q和r。也可以使用实现...

2018-08-09 22:22:01 243

原创 算法-第四版-练习1.3.40解答

题目前移编码。从标准输入读取一串字符,使用链表保存这些字符并清除重复字符。当你读取了一个从未见过的字符时,将它插入表头。当你读取了一个重复的字符时,将它从链表中删去并再次插入表头。将你的程序命名为MoveToFront:它实现了著名的前移编码策略,这种策略假设最近访问过的元素很可能会再次访问,因此可以用于缓存、数据压缩等许多场景。思路比较简单,能判断出有没有重复字符,以及重复字符的位置...

2018-08-09 21:08:33 308 1

原创 算法-第四版-练习1.3.37解答

题目Josephus问题。在这个古老的问题中,N个身陷绝境的人一致同意通过以下方式减少生存人数。他们围坐在一圈(位置记为0到N-1)并从第一个人开始报数,报到M的人会被杀死,知道最后一个人留下来。传说中Josephus找到了不会被杀死的位置。编写一个Queue的用例Josephus,从命令行接受N和M并打印出人们被杀死的顺序(这也将显示Josephus在圈中的位置)。% java Jose...

2018-08-09 20:32:14 535

原创 算法-第四版-练习1.3.35解答(和1.3.36在一起)

题目随机队列。随机队列能够存储一族元素并支持表1.3.11中的API:表 1.3.11 泛型随机队列的API public class RandomQueue<Item>   RandomQueue() 创建一条空的随机队列 boolean isEmpty() 队列是否为空 void enqueue(Item item) 添加一个元素 ...

2018-08-07 12:30:11 421 2

翻译 算法-第四版-练习1.3.30解答

题目编写一个函数,接受一条链表的首结点作为参数,(破坏性地)将链表反转并返回结果链表的首结点。思路搬运。书上有具体的思路。代码方法一(迭代)public Node reverse(Node x) { Node first = x; Node reverse = null; while (first != null)...

2018-08-07 11:37:21 175

原创 算法-第四版-练习1.3.29解答

题目用环形链表实现Queue。环形链表也是一条链表,只是没有任何结点链接为空,且只要链表非空则last.next的值就为first。只能使用一个Node类型的实例变量(last)。思路用last.next代替first即可。代码package Chap1.$3;import edu.princeton.cs.algs4.StdIn;public class E29{...

2018-08-07 11:32:02 234

原创 算法-第四版-练习1.3.31解答

题目实现一个嵌套类DoubleNode用来构造双向链表,其中每个结点都含有一个指向前驱元素的引用和一个指向后续元素的引用(如果不存在则为null)。为以下任务实现若干静态方法:在头插入结点、在表尾插入结点、从表头删除结点、从表尾删除结点、在指定结点前插入新结点、在指定结点之后插入新结点、删除指定结点。思路很简单。把栈和队列结合起来,然后使每个节点都指向前面的节点。代码pack...

2018-08-07 11:28:21 182

原创 算法-第四版-练习1.3.32解答

题目Steque。一个以栈为目标的的队列(或称steque),是一种支持push、pop和enqueue操作的数据类型。为这种抽象数据类型定义一份API并给出一份居于链表的实现。思路思路很简单,就是在用链表建立的栈中添加一个enqueue方法,使能在栈底添加数据。代码package Chap1.$3;import java.util.Scanner;public cl...

2018-08-07 10:38:15 202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除