數據結構 第2講 隊列

1、概述 隊列:一種只容許在一端進行插入,在另外一端進行刪除的線性表結構。運行插入的一端叫隊尾,容許刪除的一端叫隊頭。 2、順序存儲結構的隊列基本操做以及算法實現 基本操做:入隊、出對、隊列裏的元素數量、置空隊列、判斷是否爲空、讀取隊列頭部首元素等。 算法

image.png

//數組實現"隊列",只能存儲int數據
public class Array {
  private int[] array;
  private int count;
  
  private Array(int size){
	array = new int[size];
	count = 0;
  }
  // 將t添加到隊列的末尾
  public void add(int t){
	  array[count++] = t;
  }
  // 返回"隊列開頭元素"
  public int front(){
	  return array[0];
  }
  // 返回"棧頂元素值",並刪除"棧頂元素"
  public int pop(){
	  int ret = array[0];
	  count--;
	  for (int i =1; i <=count; i++) {
		array[i-1] = array[i];
	}
	  return ret;
  }
  // 返回"棧"的大小
  public int size() {
      return count;
  }

  // 返回"棧"是否爲空
  public boolean isEmpty() {
      return size()==0;
  }

  public static void main(String[] args) {
      int string= 30;
      Array stack = new Array(12);

      // 將10, 20, 30 依次推入棧中
      stack.add(10);
      stack.add(20);
      stack.add(30);

      // 將"棧頂元素"賦值給string,並刪除"棧頂元素"
      string = stack.pop();
      System.out.printf("string=%d\n",string);

      // 只將"棧頂"賦值給string,不刪除該元素.
      string = stack.front();
      System.out.printf("string=%d\n",string);

      stack.add(10);

      System.out.printf("isEmpty()=%b\n", stack.isEmpty());
      System.out.printf("size()=%d\n", stack.size());
      while (!stack.isEmpty()) {
          System.out.printf("size()=%d\n", stack.pop());
      }
  }
}
複製代碼

image.png

image.png
相關文章
相關標籤/搜索