java 数据结构

来源:互联网 发布:软件定义 编辑:程序博客网 时间:2024/06/15 22:36

         LinkedList其实不止实现了List接口,Cloneable, Serializable这两个常规接口,此外还实现了Deque接口。正是如此,它不仅仅是个列表(List),同时还是

个双向队列(Deque),栈(Stack)。

LinkedList 类的定义:

publicclassLinkedList<E>extendsAbstractSequentialList<E>implementsList<E>,Deque<E>,Cloneable,java.io.Serializable

例1

  1. public class LinkedListTest  
  2. {  
  3.     public static void main(String[] args)  
  4.     {  
  5.         LinkedList books = new LinkedList();  
  6.         // 将字符串元素加入队列的尾部  
  7.         books.offer("爸爸");  
  8.         // 将一个字符串元素加入栈的顶部  
  9.         books.push("妈妈");  
  10.         // 将字符串元素添加到队列的头部(相当于栈的顶部)  
  11.         books.offerFirst("孩子");  
  12.         // 以List的方式(按索引访问的方式)来遍历集合元素  
  13.         for (int i = 0; i < books.size() ; i++ )  
  14.         {  
  15.             System.out.println("遍历中:" + books.get(i));  
  16.         }  
  17.         // 访问、并不删除栈顶的元素  
  18.         System.out.println(books.peekFirst());  
  19.         // 访问、并不删除队列的最后一个元素  
  20.         System.out.println(books.peekLast());  
  21.         // 将栈顶的元素弹出“栈”  
  22.         System.out.println(books.pop());  
  23.         // 下面输出将看到队列中第一个元素被删除  
  24.         System.out.println(books);  
  25.         // 访问、并删除队列的最后一个元素  
  26.         System.out.println(books.pollLast());  
  27.         // 下面输出:[妈妈 ]  
  28.         System.out.println(books);  
  29.     }  
  30. }  

例2

  1. import java.util.*;
  2. public class QueueDemo{
  3.     public static void main(String args[])
  4.     {
  5.       Queue<String> q = new LinkedList<String>();//LinkedList实现Queue接口,面向对象的多态性
  6.       q.offer("first");
  7.       q.offer("second");
  8.   q.offer("third");
  9.       System.out.println(q);
  10.       //poll()函数:从队列首位取出并删除该元素
  11.       String qs = q.poll();
  12.       System.out.println(qs);
  13.       System.out.println(q);
  14.       //peek():从队列首位取出元素但不删除
  15.       String qc = q.peek();
  16.       System.out.println(qc);
  17.       System.out.println(q);
  18.       
  19.     }   
  20. }

双向队列(Deque),是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队和

出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则

例3

  1. import java.util.*;
  2. public class DequeDemo {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5.       Deque<String> d = new LinkedList<String>();
  6.       //push():将元素压入栈首
  7.       d.push("first");
  8.       d.push("second");
  9.       d.push("third");
  10.       System.out.println(d);
  11.       String ds=d.poll();
  12.       System.out.println(ds);
  13.       System.out.println(d);
  14.       d.push(ds);
  15.       System.out.println(d);
  16.       System.out.println(d.size());
  17.       while(d.size()>0){
  18.      System.out.println(d.pop());//pop()函数将元素从栈首取出,并出栈
  19.       }
  20.       System.out.println(d);
  21. }

    LinkedList不是直接根据index对元素进行操作,而是先遍历找到index对应元素,然后进行操作;下面顺便介绍一下构建二叉树的方法,已经遍历二叉树的三种方法。

0 0
原创粉丝点击