java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

 

最近在准备找工作的事情,就复习了一下java。翻了一下书和网上的教材,发现虽然很多书是用java讲数据结构的,但是侧重于将数据结构本身的知识,利用java本身的类库来实现数据结构的系统性的讲解少之又少,所以在此做一下总结,方便各位正在准备工作的和用java实现数据结构的朋友们。

附:代码下载:http://download.csdn.net/detail/sunnyskyliu/4754827

 

栈:

 

[java] view plaincopy
 
  1. void m_stack()  
  2. {  
  3.     //Stack  
  4.     Stack<String> st=new Stack<String>();  
  5.     //Stack<Integer> st=new Stack<Integer>();  
  6.     st.push("1a");  
  7.     st.push("2b");  
  8.     st.push("3c");  
  9.     st.push("4d");  
  10.     System.out.println("pop is:"+st.pop());  
  11.     System.out.println("size is:"+st.size());  
  12.     System.out.println("peek is:"+st.peek());  
  13.     System.out.println("isEmpty is:"+st.isEmpty());  
  14.     System.out.println("toString is:"+st.toString());  
  15.     System.out.println();  
  16.   
  17. }  
队列:

 

[java] view plaincopy
 
  1. void m_queue()  
  2.     {  
  3.         //Queue  
  4.         Queue<String> qu=new LinkedList<String>();//wrong:Queue<String> qu=new Queue<String>();  
  5.         qu.add("1a");  
  6.         qu.add("2b");  
  7.         qu.add("3c");  
  8.         qu.add("4d");  
  9.         //qu.offer("4d");//equal to add,but no exception  
  10.         System.out.println("remove is:"+qu.remove());  
  11.         //System.out.println("poll is:"+qu.poll());//equal to remove,but no exception  
  12.         System.out.println("peek is:"+qu.peek());  
  13.         System.out.println(qu.toString());  
  14.         System.out.println();  
  15.     }  

优先级队列:

 

[java] view plaincopy
 
  1. class m_priorityQueue extends PriorityQueue<m_priorityQueue>   
  2.                                     implements Comparable<m_priorityQueue>      
  3.     {  
  4.         private char primary;  
  5.         private int secondary;  
  6.         private String item;  
  7.            
  8.         public m_priorityQueue(String td,char pri,int sec){  
  9.             item = td;  
  10.             primary = pri;  
  11.             secondary = sec;  
  12.         }  
  13.         //for comparable  
  14.         public int compareTo(m_priorityQueue arg) {  
  15.             if(primary > arg.primary)  
  16.                 return +1;  
  17.             if(primary == arg.primary)  
  18.                 if(secondary > arg.secondary)  
  19.                     return +1;  
  20.                 else if(secondary == arg.secondary)  
  21.                     return 0;  
  22.             return -1;  
  23.         }  
  24.         public String toString()  
  25.         {  
  26.             return Character.toString(primary)+ secondary + ": " + item;  
  27.         }   
  28.         public void add(String td,char pri,int sec)  
  29.         {  
  30.             super.add(new m_priorityQueue(td,pri,sec));  
  31.         }  
  32.         public void run()  
  33.         {  
  34.             add("sixth",‘C‘,4);  
  35.             add("second",‘A‘,2);  
  36.             add("fourth",‘B‘,7);  
  37.             add("fifth",‘C‘,3);  
  38.             add("first",‘A‘,1);  
  39.             add("third",‘B‘,1);  
  40.             while(!isEmpty())  
  41.                 System.out.println(remove());  
  42.         }  
  43.     }  
  44.       
链表:

 

[java] view plaincopy
 
  1. //link list  
  2.     void m_linkList()  
  3.     {  
  4.         LinkedList<String> head = new LinkedList<String>();    
  5.         head.add("1");    
  6.         head.add("3");    
  7.         head.add(1"2");    
  8.         //鏈表會自動用遍歷的方式打印所有內容    
  9.         System.out.println(head);    
  10.         System.out.println("size is:"+head.size());  
  11.           
  12.         //利用Vector或者是ArrayList等Collection往鏈表中加數據    
  13.         Vector<String> v = new Vector<String>();  //need to import java.util.Vector;  
  14.         //LinkedList<String> v=new LinkedList<String>();  
  15.         //向Vector中加入東西    
  16.         v.add("a");    
  17.         v.add("b");    
  18.         //將當前Vector加在當前鏈表的最后    
  19.         head.addAll(v);    
  20.           
  21.         System.out.println(head);    
  22.         //將當前Vector加在當前鏈表的指定位置    
  23.         head.addAll(2, v);    
  24.         System.out.println(head);    
  25.         //打印指定位置的內容    
  26.         System.out.println("get(2) is:"+head.get(2));    
  27.         System.out.println("index is:"+head.indexOf(head.get(2)));  
  28.         head.addFirst("fist");    
  29.         head.addLast("last");    
  30.         System.out.println(head);    
  31.         //刪除第一個    
  32.         head.remove(head.getFirst());    
  33.         head.remove(head.getLast());    
  34.         System.out.println(head);    
  35.         //再刪除第一個,采用下標的方式,下標從0開始    
  36.         head.remove(0);    
  37.         System.out.println(head);    
  38.         System.out.println();  
  39.   
  40.     }  
( 鸣谢:http://wangyu.iteye.com/blog/190762

 

哈希:

 

[java] view plaincopy
 
  1. void m_hash()  
  2.     {  
  3.         Hashtable<String, Integer> h=new Hashtable<String, Integer>();  
  4.         h.put("用户1",new Integer(90));  
  5.         h.put("用户2",new Integer(50));  
  6.         h.put("用户3",new Integer(60));  
  7.         h.put("用户4",new Integer(70));  
  8.         h.put("用户1",new Integer(80));  
  9.         System.out.println("用户1: "+h.get("用户1"));  
  10.         /* 
  11.         //枚举 
  12.         Enumeration<Integer> e=h.elements(); 
  13.         while(e.hasMoreElements()) 
  14.         { 
  15.             System.out.println(e.nextElement()); 
  16.         }*/  
  17.         for(Iterator<String> itor=h.keySet().iterator(); itor.hasNext();)  
  18.         {  
  19.             String word=itor.next().toString();  
  20.             Integer in=(Integer)h.get(word);  
  21.             System.out.println("word: "+word+" time:"+in);  
  22.         }  
  23.     }  

main调用:

 

 

[java] view plaincopy
 
  1. public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.   
  4.         dataStructure da=new dataStructure();  
  5.         da.m_stack();  
  6.         da.m_queue();  
  7.         da.m_linkList();  
  8.         da.m_hash();  
  9.           
  10.         dataStructure.m_priorityQueue pqueue=da.new m_priorityQueue(null‘0‘0);  
  11.         pqueue.run();  
  12.   
  13.     }  

java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

上一篇:话谈c#拷贝


下一篇:java集合简介