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); } }
結論
使用另一個棧,您可以輕鬆地按升序排列棧的元素,而無需複雜的演算法。
廣告