读书人

Java里的数据结构种大家帮忙都举个例

发布时间: 2012-12-16 12:02:32 作者: rapoo

Java里的数据结构类,大家帮忙都举个例子吧!
1.栈
2.队列
3.最小堆
4.最大堆
5.链表
6.哈希表

大家能举一个就举一个,因为刚才C++转过来,对JAVA习惯性用的东西不太了解.

举例方式:例如: Stack stack=new Stack(); 这就是一个拿来用的栈.

[解决办法]
说实话个人感觉对J2SE还算熟悉的
但对这些还真不怎么了解
JAVA中真正用到这些的时候几乎没有
[解决办法]
1.栈 java.util.Stack
2.队列 java.util.LinkedList,java.util.PriorityQueue
3.最小堆
4.最大堆
5.链表 java.util.linkedList
6.哈希表 HashMap
[解决办法]

引用:
说实话个人感觉对J2SE还算熟悉的
但对这些还真不怎么了解
JAVA中真正用到这些的时候几乎没有


额,主要想写算法的同时练练java,所以想了解了解.
[解决办法]
Binary Search Tree
AVL Tree
Black and Red Tree
234 Tree
B/B+ tree
Hash Table
Trie



[解决办法]
不是太清楚,不过有那种Java数据结构的书,楼主可以找来看看。
[解决办法]
更主要的还是思想!!!
我感觉
[解决办法]
引用:
Binary Search Tree
AVL Tree
Black and Red Tree
234 Tree
B/B+ tree
Hash Table
Trie





[解决办法]
数据结构思想清楚以后,没事看看jdk里面java.util包里面的东西,非常好玩,非常有用。
专门为程序员打造的高质低价的男士纯棉T恤:http://t4coder.us
[解决办法]
Set ,Vetor
[解决办法]

链表类List的源代码如下:

  import java.io.*;
  public class List
  {
  /*用变量来实现表头*/
  private Node Head=null;
  private Node Tail=null;
  private Node Pointer=null;
  private int Length=0;
  public void deleteAll()
  /*清空整个链表*/
  {
  Head=null;
  Tail=null;
  Pointer=null;
  Length=0;
  }
  public void reset()
  /*链表复位,使第一个结点成为当前结点*/
  {
  Pointer=null;
  }
  public boolean isEmpty()
  /*判断链表是否为空*/
  {
  return(Length==0);
  }
  public boolean isEnd()
  /*判断当前结点是否为最后一个结点*/
  {
  if(Length==0)
   throw new java.lang.NullPointerException();
  else if(Length==1)
   return true;
  else
   return(cursor()==Tail);
  }
  public Object nextNode()
  /*返回当前结点的下一个结点的值,并使其成为当前结点*/
  {
  if(Length==1)
   throw new java.util.NoSuchElementException();
  else if(Length==0)
   throw new java.lang.NullPointerException();
  else
  {
   Node temp=cursor();
   Pointer=temp;
   if(temp!=Tail)
    return(temp.next.data);


   else
    throw new java.util.NoSuchElementException();
  }
  }
  public Object currentNode()
  /*返回当前结点的值*/
  {
  Node temp=cursor();
  return temp.data;
  }
  
  public void insert(Object d)
  /*在当前结点前插入一个结点,并使其成为当前结点*/
  {
  Node e=new Node(d);
  if(Length==0)
  {
   Tail=e;
   Head=e;
  }
  else
  {
   Node temp=cursor();
   e.next=temp;
   if(Pointer==null)
    Head=e;
   else
    Pointer.next=e;
  }
  Length++;
  }
  public int size()
  /*返回链表的大小*/
  {
  return (Length);
  }
  public Object remove()
  /*将当前结点移出链表,下一个结点成为当前结点,如果移出的结点是最后一个结点,则第一个结点成为当前结点*/
  {
  Object temp;
  if(Length==0)
   throw new java.util.NoSuchElementException();
  else if(Length==1)
  {
   temp=Head.data;
   deleteAll();
  }
  else
  {
   Node cur=cursor();
   temp=cur.data;
   if(cur==Head)
    Head=cur.next;
   else if(cur==Tail)
   {
    Pointer.next=null;
    Tail=Pointer;
    reset();
   }
   else
    Pointer.next=cur.next;
    Length--;
  }
  return temp;
  }
  private Node cursor()
  /*返回当前结点的指针*/
  {
  if(Head==null)
   throw new java.lang.NullPointerException();
  else if(Pointer==null)
   return Head;
  else
   return Pointer.next;
  }
  public static void main(String[] args)
  /*链表的简单应用举例*/
  {
  List a=new List ();
  for(int i=1;i<=10;i++)
   a.insert(new Integer(i));
   System.out.println(a.currentNode());
   while(!a.isEnd())
    System.out.println(a.nextNode());
    a.reset();
    while(!a.isEnd())
    {
     a.remove();
    }
    a.remove();
    a.reset();
    if(a.isEmpty())
     System.out.println("There is no Node in List \n");
     System.in.println("You can press return to quit\n");
    try
    {
     System.in.read();
     //确保用户看清程序运行结果
    }
    catch(IOException e)
    {}
   }
  }
  class Node
  /*构成链表的结点定义*/
  {
   Object data;
   Node next;
   Node(Object d)
   {
    data=d;
    next=null;
   }
  }


[解决办法]
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分

[解决办法]
1.栈 java.util.Stack 继承了Vector,List,实际上是一个列表的实现
2.队列 实现java.util.Queue接口的类
3.最小堆
4.最大堆 JAVA好像没有这东西
5.链表 实现java.util.List接口的类
6.哈希表 实现java.util.Map接口的类
具体的类,可以看API DOC,熟悉接口才是王道
------解决方案--------------------


每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
[解决办法]
感谢~~~~~~~~~
[解决办法]
小菜鸟,C语言刚入门,拜过!
[解决办法]
回复既有十分可用

读书人网 >J2SE开发

热点推荐