Flyingis

Talking and thinking freely !
Flying in the world of GIS !
随笔 - 156, 文章 - 16, 评论 - 589, 引用 - 0
数据加载中……

基本数据结构的Java实现

链表

class Node {

Object item; Node next;

  Node (Object v) {

item = v; next = null;

}

}

头指针,空尾指针

初始化:head = null;

x后插入t

if ( x == null)

{ head = t; head.next = null; }

else { t.next = x.next; x.next = t; }

移走x之后的结点:t = x.next; x.next = t.next;

循环遍历:for ( t = head; t != null; t = t.next )

检查链表是否为空:if ( head == null )

空头结点,空尾指针

初始化:head = new Node(); head.next = null;

x后插入tt.next = x.next; x.next = t;

移走x之后的结点:t = x.next; x.next = t.next;

循环遍历:for ( t = head.next; t != null; t = t.next )

检查链表是否为空:if ( head.next == null )

空头结点,空尾结点

初始化:head = new Node(); z = new Node(); head.next = z; z.next = z;

x后插入tt.next = x.next; x.next = t;

移走x之后的结点:t = x.next; x.next = t.next;

循环遍历:for ( t = head.next; t != z; t = t.next )

检查链表是否为空:if ( head.next == z )

循环链表

第一次插入:head.next = head;

x后插入tt.next = x.next; x.next = t;

移走x之后的结点:t = x.next; x.next = t.next;

循环遍历:t = head; do { t = t.next; } while ( t != head );

检查是否只有一个数据项:if ( head.next == head )

 

堆栈

数组实现

class Stack {

  private Object[] s;

  private int n;

  Stack ( int maxN ) {

    s = new Object[maxN]; n = 0;

}

boolean isEmpty() { return ( n == 0 ); }

void push ( Object item ) { s[n++] = item; }

Object pop() {

  Object t = s[--n]; s[n] = null; return t;

}

}

链表实现

class Stack {

  private Node head;

  private class Node {

Object item; Node next;

Node ( Object item, Node next ) {

  this.item = item; this.next = next;

}

}

Stack ( Object maxN ) { head = null; }

boolean isEmpty() { return ( head ==null ); }

void push ( Object item ) { head = new Node(item, head); }

Object pop() {

  Object v = head.item;

  Node t = head.next;

  head = t;

  return v;

}

}

 

FIFO队列的链表实现

class Queue {

  private class Node {

Object item; Node next;

Node ( Object item ) {

  this.item = item; this.next = null;

}

}

Private Node head, tail;

Queue ( Object max ) { head = null; tail = null; }

boolean isEmpty() { return ( head ==null ); }

void put ( Object item ) {

  Node t = tail;

  tail = new Node(item);

  if ( empty() )

    head = tail;

  else t.next = tail

}

Object get() {

  Object v = head.item;

  Node t = head.next;

  head = t;

  return v;

}

}

posted on 2006-02-05 23:08 Flyingis 阅读(1125) 评论(1)  编辑  收藏 所属分类: Algorithm

评论

# re: 基本数据结构的Java实现  回复  更多评论   

不错,如果能加入多线程的控制就更好了
2006-02-06 11:54 | 爱拼才会赢

只有注册用户登录后才能发表评论。


网站导航: