Java程式:按升序排列給定棧的元素


在本教程中,您將學習如何使用Java按升序排列棧的元素。棧是計算機科學中的基本資料結構,遵循後進先出(LIFO)原則。

我們將分解一個簡單而有效的方法,該方法使用一個額外的臨時棧,提供詳細的分步說明,幷包含完整的程式碼示例。本教程非常適合希望增強對棧操作的理解並提高Java程式設計技能的人員。

使用Java按升序排列棧

棧就像一堆書,你只能取走最上面的那一本。也就是說,棧以後進先出的(LIFO)方式儲存專案。最後新增的專案是第一個被移除的專案。以下是使用輔助棧對棧的元素進行排序的步驟:

步驟1:建立一個臨時棧 - 我們將在此臨時儲存排序後的元素。

步驟2:排序元素 - 要對棧的元素進行排序,請按照以下步驟操作:

  • 當原始棧包含專案時。
  • 從原始棧中取出最頂部的專案。
  • 如果臨時棧不為空,並且其頂部專案大於您剛剛取出的專案,則將臨時棧的專案移回原始棧,直到您可以將您的專案放在頂部。
  • 將您取出的專案放入臨時棧。

步驟3:移回原始棧 - 一旦所有專案都在臨時棧中,將它們移回原始棧。現在,它們已排序!

示例

以下是一個示例:

import java.util.Stack;
public class StackSorter {
   public static void sortStack(Stack<Integer> stack) {
      Stack<Integer> tempStack = new Stack<>();

      while (!stack.isEmpty()) {
         int temp = stack.pop();

         while (!tempStack.isEmpty() && tempStack.peek() > temp) {
            stack.push(tempStack.pop());
         }
         tempStack.push(temp);
      }

      while (!tempStack.isEmpty()) {
         stack.push(tempStack.pop());
      }
   }
   public static void main(String[] args) {
      Stack<Integer> stack = new Stack<>();
      stack.push(34);
      stack.push(3);
      stack.push(31);
      stack.push(98);
      stack.push(92);
      stack.push(23);

      System.out.println("Original stack: " + stack);
      sortStack(stack);
      System.out.println("Sorted stack: " + stack);
   }
}

結論

使用另一個棧,您可以輕鬆地按升序排列棧的元素,而無需複雜的演算法。

更新於:2024年10月23日

77 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告