`
文章列表
1. 静态链表:用数组描述的链表叫静态链表,通常为方便数据插入,我们会把数组建的大一些。 2. 数组元素(node):由两个数据域组成(data,cursor)。数据域data用来存放数据元素,也就是通常我们要处理的数据;而cursor相当于单链表中的指针,存放该元素的后继在数组中的下标。 3. Java实现静态链表: // 静态链表 class StaticLinkedList { private int size; private Node[] node = new Node[100]; // 用数组初始化静态链表 public StaticLinkedList( ...
1. 线性表的链式存储结构:指的是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的,这就意味着这些数据元素可以存在内存未被占用的任意位置。 2. 结点:结点由存放数据元素的数据域和存放后继结点地址的指针域组成。 1.)顺序存储结构中,每个数据元素只需要存数据元素的信息就可以了。 2.)链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址。 3.)链表中第一个结点叫头结点,它的存储位置叫做头指针,它的数据域可以不存储任何信息,链表的最后一个结点指针为空。 3. Java实现单链表:
1. 线性表的顺序存储结构:指的是用一段地址连续的存储单元依次存储线性表的数据元素。 2. Java实现线性表的顺序存储结构: // 顺序存储结构 public class SequenceList { private static final int DEFAULT_SIZE = 10; // 默认初始化数组大小 private int size; // 当前数组大小 private static Object[] array; public SequenceList() { init(DEFAULT_SIZE); } public SequenceList(i ...
中国象棋中,将帅相隔遥远,并且不能照面,假设棋盘上只有将和帅两字,如下图所示(A表示将,B表示帅):A、B二子被限制在己方3 x 3的格子里运动,每一步,A、b分别可以横向或纵向移动一格,但不能沿对角线移动。另外,A不能面对B,也就是说,A和B不能处于同一纵向直线上,请写出一个程序,输出A、B所有合法的位置。要求代码中只能使用一个字节存储变量。 我们的常规思路是这样的: - - 循环A的位置 - - - - 循环B的位置 - - - - - - 判断A、B的位置是否满足要求 - - - - - - - - 如果满足,则输出。 // 一般的程序员会这么干:(但这里使用了 ...
写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占有率。程序越精简越好,可以实现以下三种情况: /**** * * 1. JAVA控制CPU的占有率 - 固定在50%,为一条直线 * ****/ public class CPUTest1 { public static void main(String[] args) throws Exception{ for (;;) { for (int i = 0; i < 96000000; i++) { ; } Thread.sleep(10); } } ...
访问者模式: 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 // 人的抽象类 public abstract class Person { // 接受一个'访问者'为参数 public abstract void accept(Action visitor); } // 男人 public class Man extends Person { @Override public void accept(Action visitor) { visitor.getManReflection(this); ...
解释器模式: 给定一中语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 // 表达式类 public abstract class Expression { public void interpret(PlayContext context) { if (context.getContext().length() == 0) { return; } else { String playKey = context.getContext().substring(0, 1); context.setContext(c ...
享元模式: 运用共享技术有效地支持大量细粒度的对象。 // 网站抽象类 public abstract class WebSite { public abstract void use(User u); } // 具体网站类 public class ConcreteWebSite extends WebSite { private String name; public ConcreteWebSite(String name) { this.name = name; } @Override public void use(User u) { Syst ...
中介者模式: 用一个中介对象来封装一系列的对象交互,中介者使个对象不需要显示地相互引用,从而使其耦合松散,可以独立地改变它们之间的交互。 // 国家类 public abstract class Country { private UnionNations un; public Country(UnionNations un) { this.un = un; } public UnionNations getUn() { return un; } public void setUn(UnionNations un) { this.un = un; ...
职责连模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将多个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 // 管理者 public abstract class Manager { // 当前管理者的上级 private Manager superior; public Manager getSuperior() { return superior; } public void setSuperior(Manager superior) { this.superior = superior; } ...
命令模式: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持撤销操作。 // 抽象命令类 public abstract class Command { private Barbecuer barbecuer; public Command(Barbecuer bar) { this.barbecuer = bar; } public abstract void excuteCommand(); public Barbecuer getBarbecuer() { return barbecuer; } ...
桥接模式: 当发现我们需要多角度去分类实现对象,而只用继承会造成大量的类增加,不能满足开放-封闭 原则,就应该考虑用桥接模式了。 // 手机接口 public abstract class Mobile { private MobileSoft soft; private String brand; public Mobile(String brand) { this.brand = brand; } public MobileSoft getSoft() { return soft; } public void setSoft(MobileSoft ...
单例模式: 保证一个类只有一个实例。 懒汉式单例: public class LazySingleton { private static LazySingleton instance = null; private LazySingleton() { } public static LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } } 双重锁定: public class M ...
迭代器模式: 类似java中的Iterator类,提供一种方法顺序访问一个聚合对象中各个元素。 // 书籍类 public class Book { private String name = ""; public Book(String name) { this.name = name; } public String getName() { return name; } } // 迭代器抽象类,执行元素递增,具有类似循环变量的功能 public interface Iterator { public abstract boole ...
组合模式使用户对单个对象和组合对象的使用具有一致性。 应用场景:需求中体香部分和整体层次的结构或希望用户忽略组合对象与单个对象的不同,可以统一地使用组合结构中的所有对象。 优点:基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,可以不断地递归下去。 // 抽象公司类 public abstract class Company { private String name; public Company(String name) { this.name = name; } public String getName() { return name; ...
Global site tag (gtag.js) - Google Analytics