用一个栈实现另一个栈的排序
生活随笔
收集整理的這篇文章主要介紹了
用一个栈实现另一个栈的排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求:
??? 在一個棧中元素的類型為整型,現在想將該棧從棧頂到棧底按從大到小的順序排序,只許申請一個棧,除此之外,可以申請其他變量,但是不能申請額外的數據結構
解題思路:
???? 待排序的棧stack, 輔助棧help。 在stack上執行pop操作,記元素為cur
???? if cur <= 【help 的棧頂元素】,cur 壓入help棧中;
???? else cur > 【help 的棧頂元素】,逐一彈出help, 直到cur <= 【help 的棧頂元素】,在將cur壓入help
????? 一直執行以上操作,直到stack中的全部元素都導入help棧中,(此時從棧頂到棧底:有小到大),最后,將help棧中的元素,pop一下,排序
import java.util.Stack;public class Problem05_StackSortStack {/** 待排序的棧stack, 輔助棧help。 在stack上執行pop操作,記元素為curif cur <= 【help 的棧頂元素】,cur 壓入help棧中;else cur > 【help 的棧頂元素】,逐一彈出help, 直到cur <= 【help 的棧頂元素】,在將cur壓入help一直執行以上操作,直到stack中的全部元素都導入help棧中,(此時從棧頂到棧底:有小到大),最后,將help棧中的元素,pop一下,排序*/public static void sortStackByStack(Stack<Integer> stack) {Stack<Integer> help = new Stack<Integer>();while (!stack.isEmpty()) {int cur = stack.pop();while (!help.isEmpty() && help.peek() < cur) {stack.push(help.pop());}help.push(cur);}while (!help.isEmpty()) {stack.push(help.pop());}}public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();stack.push(3);stack.push(1);stack.push(6);stack.push(2);stack.push(5);stack.push(4);sortStackByStack(stack); int stack_size= stack.size();System.out.println("stack元素是:");for (int size=0; size < stack_size; size ++){ System.out.println(stack.pop());}}}執行結果:
stack元素是: 6 5 4 3 2 1轉載于:https://www.cnblogs.com/xiyuan2016/p/6830821.html
總結
以上是生活随笔為你收集整理的用一个栈实现另一个栈的排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adb 功能大全
- 下一篇: 二、Windows基础数据类型