程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java:基於LinkedList實現棧和隊列

Java:基於LinkedList實現棧和隊列

編輯:關於JAVA

1.提供一組棧的接口,其底層關聯到一個LinkedList(雙端隊列)實例。由於只暴露部分基於棧實現的接口,所以可以提供安全的棧實現。

import java.util.LinkedList;

public class Stack<T> {
  private LinkedList<T> storage = new LinkedList<T>();
   /** 入棧 */
  public void push(T v) {
    storage.addFirst(v);
  }
   /** 出棧,但不刪除 */
  public T peek() {
    return storage.getFirst();
  }
   /** 出棧 */
  public T pop() {
    return storage.removeFirst();
  }
   /** 棧是否為空 */
  public boolean empty() {
    return storage.isEmpty();
  }
   /** 打印棧元素 */
  public String toString() {
    return storage.toString();
  }
}

2.使用java.util.Queue接口,其底層關聯到一個LinkedList(雙端隊列)實例。由於只暴露部分基於隊列實現的接口,所以可以提供安全的隊列實現。

import java.util.LinkedList;

import java.util.Queue;
public class MyQueue<T> {
  private Queue<T> storage = new LinkedList<T>();
  /** 將指定的元素插入隊尾 */
  public void offer(T v) {
    storage.offer(v);
  }
  /** 檢索,但是不移除隊列的頭,如果此隊列為空,則返回 null */
  public T peek() {
    return storage.peek();
  }
  /** 檢索,但是不移除此隊列的頭 */
  /** 此方法與 peek 方法的惟一不同是,如果此隊列為空,它會拋出一個異常 */
  public T element() {
    return storage.element();
  }
  /** 檢索並移除此隊列的頭,如果隊列為空,則返回 null */
  public T poll() {
    return storage.poll();
  }
  /** 檢索並移除此隊列的頭 */
  /** 此方法與 poll 方法的不同在於,如果此隊列為空,它會拋出一個異常 */
  public T remove() {
    return storage.remove();
  }
  /** 隊列是否為空 */
  public boolean empty() {
    return storage.isEmpty();
  }
  /** 打印隊列元素 */
  public String toString() {
    return storage.toString();
  }
}

本文出自 “子 孑” 博客,請務必保留此出處http://zhangjunhd.blog.51cto.com/113473/69912

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved