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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告