蓝桥杯-小王子单链表java

题目详情:

小王子有一天迷上了排队的游戏,桌子上有标号为 1-101−10 的 1010 个玩具,现在小王子将他们排成一列,可小王子还是太小了,他不确定他到底想把那个玩具摆在哪里,直到最后才能排成一条直线,求玩具的编号。已知他排了 MM 次,每次都是选取标号为 XX 个放到最前面,求每次排完后玩具的编号序列。

要求一:采用单链表解决

输入描述

第一行是一个整数 MM,表示小王子排玩具的次数。

随后 MM 行每行包含一个整数 XX,表示小王子要把编号为 XX 的玩具放在最前面。

输出描述

共 MM 行,第 ii 行输出小王子第 ii 次排完序后玩具的编号序列。

输入输出样例
示例 1
输入

5
3
2
3
4
2

copy
输出

3 1 2 4 5 6 7 8 9 10
2 3 1 4 5 6 7 8 9 10
3 2 1 4 5 6 7 8 9 10
4 3 2 1 5 6 7 8 9 10
2 4 3 1 5 6 7 8 9 10

这道题目比较简单,利用单链表的知识点。题目的大致意思:小王子有十个球,分别标号1-10个数字,先输入一个数字m,代表小王子排了多少次,接着每排一次就会选取x放在最前面,剩下的求顺序不变。可以把每次取出的球(list.addFirst(x))放在最前面,然后删除list.remove(x),最后使用循环遍历每次改变之后的链表并输出。
代码如下:

import java.util.LinkedList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        LinkedList<Integer> list = new LinkedList<>();
        for(int i=1;i<=10;i++){
            list.add(i);
        }
        int m = sc.nextInt();
        int n = m+1;
        while(n-->0){
        int x = sc.nextInt();
        for(int i=0;i<10;i++){
            if(list.get(i)==x){
                list.remove(i);
                break;
            }
        }
        list.addFirst(x);
        for(int i=0;i<10;i++){
            System.out.print(list.get(i)+" ");
        }
        System.out.println();}
        sc.close();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值