- 浏览: 122540 次
- 性别:
- 来自: 上海
文章列表
Array 可变长可变维数组
- 博客分类:
- 数据结构
一个可以变长,变维的数组(只可以变大),用来替代多维数组基本做法与Array相似set(Object value, int... pos):放入数值,第一个参数是要放入的内容,其余是下标get(int... pos):取出数值,参数是下标,返回那个下标指定的数值 class Array {
private Object[] array = new Object[0];
private int length = 0;
public void set(Object value, int... pos) {
set(value,pos,0);
}
private void set(Ob ...
- 2008-04-06 11:25
- 浏览 1841
- 评论(0)
StackDLink 双向链表
- 博客分类:
- 数据结构
用LinkedStack实现的双向链表,功能与DLink一致就实现的难度来看:addFirst,addLast,removeFirst,removeLast,next,preivous,hasNext,hasPrevious比DLink简单但是insertBefore,insertAfter,removeBefore,removeAfter比较困难。另外indexOf不易实现,没有做class StackDLink {
private LinkedStack nextStack = new LinkedStack();
private LinkedStack previousStack = ...
- 2008-04-05 23:20
- 浏览 1152
- 评论(0)
LinkedList 列表
- 博客分类:
- 数据结构
列表的简单实现,只能存储非负整数List 也属于ADT(抽象数据类型),此处是使用DLink类实现List。另外一个实现请参见ArrayList 设置,取值的方法:set,get添加,插入,删除的方法add ,insert, remove 其他方法getLength, indexOfclass LinkedList {
private DLink link = new DLink();
void add(int value) {
link.addLast(value);
}
void set(int value, int pos) {
assert pos < link ...
- 2008-04-05 19:16
- 浏览 1458
- 评论(0)
ArrayList 列表
- 博客分类:
- 数据结构
列表的简单实现,只能存储非负整数List 也属于ADT(抽象数据类型),此处是使用Array类实现List。另外一个实现请参见LinkedList 设置,取值的方法:set,get添加,插入,删除的方法add ,insert, remove 其他方法getLength, indexOf class ArrayList {
private Array array = new Array();
void add(int value) {
array.set(value,array.getLength());
}
void set(int value, int pos) {
ass ...
- 2008-04-05 19:01
- 浏览 1205
- 评论(0)
实现了队的最简单功能:先进现出队属于ADT(抽象数据类型),其提供同样逻辑功能时,底层数据结构可以不一样。 内部实现使用DLink,只存储非负整数put:入get:出isEmpty:队列是否为空其他实现参考Queueclass LinkedQueue {
private DLink dlink = new DLink();
void put(int value) {
dlink.addFirst(value);
}
int get() {
return dlink.removeLast();
}
boolean isEmpty() {
return dlink.get ...
- 2008-04-05 18:43
- 浏览 1854
- 评论(0)
DLink 双向双端链表
- 博客分类:
- 数据结构
DLink 实现一个简单的双向双端链表与Link一样,假定其之存储非负整数,并提供最能反映双向双端链表特征的方法实现时利用辅助类DNode实现,DNode是双向节点基本添加删除数据方法addFirst, addLast, removeFirst, removeLast遍历方法:hasNext, next, resetToBeforeFirsthasPrevious, previous, resetToAfterLast遍历时插入,删除方法insertAfter, removeAfterinsertBefore, removeBefore其她:getLength, indexOfclass DNo ...
- 2008-04-05 18:06
- 浏览 1501
- 评论(0)
LinkedStack栈属于ADT(抽象数据类型),其提供同样逻辑功能时,底层数据结构可以不一样。 在实现上利用单向单端链表实现Link来实现,只提供存储非负整数的功能。对于栈的典型方法提供push:进栈pop:出栈isEmpty: 判断栈是否为空没有提供其他功能更强大的方法。 在另一个实现中,底层数据结构可选用Array,请参见ArrayStackclass LinkedStack {
private Link link = new Link();
void push(int value) {
link.addFirst(value);
}
int pop() {
retur ...
- 2008-04-05 17:45
- 浏览 1120
- 评论(1)
Link 提供以下APIaddFirst,removeFirstgetLengthhasNextnextresetinsertAfterremoveAfterindexOf Node 是辅助结构,为了简便,没有使用标准的set,get方法,并且假设存储的内容是非负整数。该结构实现单向单端链表最简化结构,只提供相对于此数据结构实现起来非常方便的方法。如只提供insertAfter而没有提供insertBefore。 class Node {
private int value;
private Node next;
Node(int value) {
this.value = val ...
- 2008-04-05 16:13
- 浏览 1702
- 评论(1)
Array 可变长一维数组
- 博客分类:
- 数据结构
这是一个可变长数组,对外提供API主要有set,get,可以用它来替代原始数组,不用考虑空间的大小。 此数组是一维的,存放的内容是非负整数,可以考虑用Object,此处用int为的是看起来简单。每次扩展的长度大体是原来数组长度的10%,也就是oldLenght + oldLength/10,truancate可以缩短数组长度,同时给客户一个减少数组实际占用空间的机会。class Array {
private int a[] = new int[0];
private int length = 0;
private static final int WASTER_FACTOR = 10; ...
- 2008-04-05 16:05
- 浏览 2445
- 评论(0)
public class Arrays {
public static void main(String[] args) {
//test copy
int[] a = {1,3,2,6,3,4,2,5,3,6};
int[] b = new int[10];
copy(a,3,b,2,2);
copy(a,3,a,2,5); //源与目的可以是一个数组
copy(a,2,a,3,5);
System.out.println(toString(b));
swap(a,b);
System.out.println(toString(b));
a = cha ...