1. 程式人生 > >隊列的實現——java

隊列的實現——java

urn 自帶 list() linked 隊列 cti collect ack 數據

同樣實現方法有兩種:

1. 數組的實現,可以存儲任意類型的數據(略);

2. Java的 Collection集合 中自帶的"隊列"(LinkedList)的示例:

import java.util.Stack;

/**
 * 用“棧”實現隊列
 *
 * @author skywang
 */
public class StackList<T> {

    // 向隊列添加數據時:(01) 將“已有的全部數據”都移到mIn中。 (02) 將“新添加的數據”添加到mIn中。
    private Stack<T> mIn  = null;
    // 從隊列獲取元素時:(01) 將“已有的全部數據”都移到mOut中。(02) 返回並刪除mOut棧頂元素。
private Stack<T> mOut = null; // 統計計數 private int mCount = 0; public StackList() { mIn = new Stack<T>(); mOut = new Stack<T>(); mCount = 0; } private void add(T t) { // 將“已有的全部數據”都移到mIn中 while (!mOut.empty()) mIn.push(mOut.pop());
// 將“新添加的數據”添加到mIn中 mIn.push(t); // 統計數+1 mCount++; } private T get() { // 將“已有的全部數據”都移到mOut中 while (!mIn.empty()) mOut.push(mIn.pop()); // 統計數-1 mCount--; // 返回並刪除mOut棧頂元素 return mOut.pop(); } private int size() {
return mCount; } private boolean isEmpty() { return mCount==0; } public static void main(String[] args) { StackList slist = new StackList(); // 將10, 20, 30 依次推入棧中 slist.add(10); slist.add(20); slist.add(30); System.out.printf("isEmpty()=%b\n", slist.isEmpty()); System.out.printf("size()=%d\n", slist.size()); while(!slist.isEmpty()) { System.out.printf("%d\n", slist.get()); } } }

隊列的實現——java