You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组转换为栈?洗牌后卡牌数组转栈并打印栈顶值求助

如何将数组转换为栈并获取栈顶元素?

嘿,这个需求挺典型的!把洗牌后的卡牌数组转成栈,再取出栈顶元素,不同编程语言的实现思路其实很一致——核心就是利用栈「后进先出」的特性,要么直接用语言自带的栈结构来初始化,要么手动把数组元素依次压入栈。我给你几个常用语言的具体实现:

Python 实现

Python里没有专门的栈类,但用列表就能完美模拟栈:列表的append()方法对应栈的压入操作,pop()对应弹出,而且默认操作的都是列表末尾元素(也就是栈顶位置)。

import random

# 先初始化一副卡牌数组(这里用1-54代表54张牌)
cards = list(range(1, 55))
# 洗牌打乱顺序
random.shuffle(cards)

# 直接把数组转成栈(列表模拟)——复制数组即可,列表末尾就是栈顶
card_stack = cards.copy()

# 如果你想手动模拟压栈过程,也可以这么写:
# card_stack = []
# for card in cards:
#     card_stack.append(card)

# 打印栈顶元素(取列表最后一个元素)
print("栈顶卡牌数值:", card_stack[-1])

Java 实现

Java自带Stack类,我们可以把数组转成集合后直接初始化栈,也可以循环压入元素:

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Stack;

public class CardStackDemo {
    public static void main(String[] args) {
        // 初始化54张卡牌的数组
        Integer[] cards = new Integer[54];
        for (int i = 0; i < 54; i++) {
            cards[i] = i + 1;
        }
        // 把数组转成List后洗牌
        List<Integer> cardList = Arrays.asList(cards);
        Collections.shuffle(cardList);

        // 将List中的元素全部压入栈
        Stack<Integer> cardStack = new Stack<>();
        cardStack.addAll(cardList);

        // 手动压栈的写法也很简单:
        // for (Integer card : cardList) {
        //     cardStack.push(card);
        // }

        // 用peek()获取栈顶元素(不会弹出元素,刚好符合你的需求)
        System.out.println("栈顶卡牌数值:" + cardStack.peek());
    }
}

小提示

  • 不管用哪种语言,数组转栈后,栈顶元素就是数组最后一个被压入的元素——如果是直接复制数组/用集合初始化栈,那栈顶就是原洗牌后数组的最后一个元素。
  • 注意区分peek()和pop():peek()只获取栈顶不删除,pop()会获取并删除栈顶元素,你的需求用peek()就够啦。

内容的提问来源于stack exchange,提问作者Adam Yerden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:17:19