分享

多种数据结构的Java实现

 moonboat 2009-02-11

多种数据结构的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后插入t:t.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后插入t:t.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后插入t:t.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;
  }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多