隊列和棧

隊列和棧

Queue

  隊列(Queue)是常用的數據結構,可以將隊列看成特殊的線性表,隊列限制了對線性表的訪問方式,只能從線性表的一端添加(offer)元素,從另一端取出(poll)元素。
  隊列遵循先進先出(FIFO first input First Output)原則
  JDK中提供了Queue接口,同時使得LinkedList實現了該接口(選擇LinkedList實現Queue的原因在於Queue經常要進行插入和刪除的操作,而LinkedList在這方面效率較高)。
  Queue提供了操作隊列的相關方法:
   1. boolean offer(E e):將元素追加到隊列末尾,若添加成功則返回true。
   2. E poll():從隊首刪除並返回該元素;
   3. E peek():返回隊首元素,但是不刪除。

Deque

  Deque是Queue的子接口,定義了所謂的“雙端隊列”即從隊列的兩端分別可以入隊(offer)和出隊(poll),LinkedList實現了該接口。
  如果將Deque限制爲只能從一端入隊和出隊,則可實現“棧”(Stack)的數據結構,對於棧而言,入棧稱之爲push,出棧稱之爲pop。
  棧遵循先進後出(FILO First input Last Oytput)的原則。
  Deque提供了操作棧的相關方法,其中主要方法如下:
  1. void push(E e):將給定元素“壓入”棧中,存入的元素會在棧首,即:棧的第一個元素。
  2. E pop():將棧首元素刪除並返回。

發佈了28 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章