算法提高 逆序排列(java)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lc5801889/article/details/87074994

问题描述

编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来。
  输入格式:
  输入只有一行,由若干个整数组成,中间用空格隔开,最末尾的整数为0。
  输出格式:
  输出也只有一行,即逆序排列后的整数,中间用空格隔开,末尾没有空格。
  输入输出样例
  
样例输入

7 19 -5 6 2 0

样例输出

2 6 -5 19 7

解题思路:

本题主要考察对栈结构的运用,首先观察本题我们可知:我们需要不断往数组中存入数据,当输入0后结束并且逆序输出,这个过程与栈结构进栈出栈非常类似,因此我们可以创建栈结构来接收数组,进而通过出栈方式实现逆序排列。
注意:
格式要求,最后一个数后不能有空格,因此出栈是需要判断是否为最后一个数,若是则不输出空格!
代码如下:

import java.util.Scanner;
import java.util.Stack;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Stack<Integer> st = new Stack<Integer>();//创建Integer类型的栈结构
		for (int i = 0; i < 20; i++) {
			int n = sc.nextInt();
			if(n==0){//若为0则跳出循环
				break;
			}else{
				st.push(n);
			}
		}
		while(!st.empty()){
			if(st.size()>1){//判断是否为最后一个元素
				System.out.print(st.pop()+" ");
			}else{
				System.out.print(st.pop());
			}
		}
	}

}

在这里插入图片描述
祝愿每个热爱编程的热血青年都能实现自己的梦想!

猜你喜欢

转载自blog.csdn.net/lc5801889/article/details/87074994
今日推荐