亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 1247 | 回復(fù): 0
打印 上一主題 下一主題

java隊(duì)列 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-05-26 14:22 |只看該作者 |倒序?yàn)g覽
隊(duì)列是一種特殊的線性表,它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。隊(duì)列中沒有元素時(shí),稱為空隊(duì)列。   在隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將是最先被刪除的元素;反之最后插入的元素將最后被刪除的元素,因此隊(duì)列又稱為“先進(jìn)先出”(FIFO—first in first out)的線性表。   隊(duì)列空的條件:front=rear   隊(duì)列滿的條件: rear = MAXSIZE.
  1. //通過LinkedList實(shí)現(xiàn)隊(duì)列
  2. package 隊(duì)列和堆棧;
  3. import java.util.*;
  4. public class LinkedListQueueTest {

  5. //字段
  6. private LinkedList list;

  7. //無參數(shù)構(gòu)造
  8. public LinkedListQueueTest()
  9. {
  10.   list=new LinkedList();
  11. }

  12. //隊(duì)列元素的個(gè)數(shù)
  13. public int size()
  14. {
  15.   return list.size();
  16. }

  17. //進(jìn)入隊(duì)列
  18. public void enqueue(Object obj)
  19. {
  20.   list.addLast(obj);
  21.   
  22. }


  23. //對(duì)頭出來
  24. public Object dequeue()
  25. {
  26.   return list.removeFirst();
  27. }

  28. //瀏覽對(duì)頭元素
  29. public Object front()
  30. {
  31.   //return list.getFirst();
  32.   return list.peekFirst();
  33. }

  34. //判斷隊(duì)列是否為空
  35. public boolean isEmpty()
  36. {
  37.   return list.isEmpty();
  38. }


  39. /**
  40.   * @param args
  41.   */
  42. public static void main(String[] args) {
  43.   // TODO Auto-generated method stub
  44.   
  45.   LinkedListQueueTest llq=new LinkedListQueueTest();
  46.   System.out.println(llq.isEmpty());
  47.   llq.enqueue("147");
  48.   llq.enqueue("258");
  49.   llq.enqueue("369");
  50.   System.out.println(llq.size());
  51.   System.out.println("移除隊(duì)列頭元素:"+llq.dequeue());
  52.   System.out.println(llq.size());
  53.   llq.enqueue("abc");
  54.   llq.enqueue("def");
  55.   System.out.println(llq.size());
  56.   System.out.println("查看隊(duì)列的頭元素:"+llq.front());
  57.   System.out.println(llq.size());
  58.   System.out.println(llq.isEmpty());

  59. }

  60. }
  61. 通過數(shù)組實(shí)現(xiàn)
  62. package 隊(duì)列和堆棧;

  63. import java.util.NoSuchElementException;

  64. //通過數(shù)組來實(shí)現(xiàn)隊(duì)列
  65. public class ArrayQueue {
  66. //字段
  67. public  static  Object[] data;
  68. //隊(duì)列的元素個(gè)數(shù)
  69. protected int size ;
  70. //隊(duì)列頭
  71. protected int head;
  72. //隊(duì)列尾
  73. public static  int tail;
  74. /**
  75.   *
  76.   */
  77. //無參數(shù)構(gòu)造函數(shù)
  78. public ArrayQueue() {
  79.   final int INITIAL_LENGTH=3;
  80.   data=new Object[INITIAL_LENGTH];
  81.   size=0;
  82.   head=0;
  83.   tail=-1;
  84. }

  85. //隊(duì)列元素個(gè)數(shù)方法
  86. public int size()
  87. {
  88.   return size;
  89.   
  90. }

  91. public boolean isEmpty()
  92. {
  93.   return size==0;
  94. }

  95. //得到隊(duì)列頭元素
  96. public Object front()
  97. {
  98.   if(size==0)
  99.    throw new NoSuchElementException();
  100.   return data[head];
  101.   
  102. }

  103. //進(jìn)入隊(duì)列enqueue()方法
  104. public void enqueue(Object obj)
  105. {
  106.   //此時(shí)隊(duì)列已經(jīng)滿
  107.   if(size==data.length){
  108.    Object[] oldData=data;
  109.    data=new Object[data.length*2];
  110.    //if(head==0)
  111.    System.arraycopy(oldData, head, data, 0, oldData.length-head);
  112.    if(head>0)
  113.     System.arraycopy(oldData, 0, data, head+1, tail+1);
  114.    head=0;
  115.    tail=oldData.length-1;
  116.    
  117.   }
  118.   tail=(tail+1)%data.length;
  119.   size++;
  120.   data[tail]=obj;
  121.   
  122. }

  123. //隊(duì)列的元素出隊(duì)
  124. public Object dequeue()
  125. {
  126.   if(size==0)
  127.    throw new NoSuchElementException();
  128.   Object ele=data[head];
  129.   //循環(huán)隊(duì)列
  130.   head=(head+1)%data.length;
  131.   size--;
  132.   return ele;
  133. }

  134. @Override
  135. public String toString() {
  136.   // TODO Auto-generated method stub
  137.   return super.toString();
  138. }

  139. }
  140. 通過向量實(shí)現(xiàn):
  141. //通過向量實(shí)現(xiàn)棧
  142. package 隊(duì)列和堆棧;
  143. import java.util.*;
  144. public class VectorStackTest {
  145. //字段
  146. Vector  v;

  147. //構(gòu)造函數(shù)
  148. public VectorStackTest()
  149. {
  150.   v=new Vector();
  151. }

  152. //元素的個(gè)數(shù)
  153. public int size()
  154. {
  155.   return v.size();
  156. }

  157. //是否為空
  158. public boolean isEmpty()
  159. {
  160.   return size()==0;
  161. }

  162. //進(jìn)棧
  163. public Object Push(Object obj)
  164. {
  165.   v.addElement(obj);
  166.   return obj;
  167. }

  168. //出棧方法
  169. public Object Pop()
  170. {
  171.   int len=size();
  172.   Object obj=Peek();
  173.   v.removeElementAt(len-1);
  174.   return obj;
  175. }

  176. //查看棧頂元素
  177. public Object Peek()
  178. {
  179.   int len = size();
  180.   if (len == 0)
  181.       throw new EmptyStackException();
  182.   return v.elementAt(len - 1);
  183. }
  184. /**
  185.   * @param args
  186.   */
  187. public static void main(String[] args) {
  188.   // TODO Auto-generated method stub
  189.   VectorStackTest vst=new VectorStackTest();
  190.   System.out.println("大。"+vst.size());
  191.   vst.Push("123");
  192.   vst.Push("456");
  193.   vst.Push("789");
  194.   vst.Push("abc");
  195.   System.out.println("大小:"+vst.size());
  196.   System.out.println("棧頂:"+vst.Peek());
  197.   System.out.println("出棧:"+vst.Pop());
  198.   vst.Push("def");
  199.   vst.Push("147");
  200.   System.out.println("大。"+vst.size());
  201.   System.out.println("棧頂:"+vst.Peek());
  202.   System.out.println("出棧:"+vst.Pop());
  203.   System.out.println(vst.Peek());
  204.   vst.Push("def");
  205.   vst.Push("147");
  206.   System.out.println(vst.Pop());
  207.   System.out.println(vst.Pop());
  208.   System.out.println(vst.Peek());
  209.   System.out.println(vst.Pop());
  210.   System.out.println(vst.Pop());
  211.   vst.Push("1aadf");
  212.   vst.Push("2dafad");
  213.   vst.Push("123789");
  214.   System.out.println(vst.Pop());
  215.   System.out.println(vst.Peek());
  216.   System.out.println(vst.Pop());
  217.   System.out.println(vst.Peek());
  218.   System.out.println("------------------end------------");
  219.   VectorStackTest llst=new VectorStackTest();
  220.   llst.Push("123");
  221.   llst.Push("456");
  222.   System.out.println("棧頂:"+llst.Peek());
  223.   System.out.println("出棧:"+llst.Pop());
  224.   System.out.println(llst.Peek());
  225.   llst.Push("789");
  226.   llst.Push("abc");
  227.   System.out.println("棧頂:"+llst.Peek());
  228.   System.out.println("出棧:"+llst.Pop());
  229.   System.out.println(llst.size());
  230.   System.out.println("棧頂:"+llst.Peek());

  231.   
  232.   



  233.   

  234. }

  235. }
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP