gpt4 book ai didi

stack - "Implement a stack"实际上是什么意思?

转载 作者:行者123 更新时间:2023-12-02 00:39:22 29 4
gpt4 key购买 nike

我的教授要我绘制堆栈吗?他想让我付诸行动吗?我觉得自己很愚蠢,但这不像任何人告诉我的那样!感谢您的帮助。

哇,你们真快。已经谢谢你了。完整的问题是:考虑两个堆栈,每个堆栈的大小为 n(即,每个堆栈最多可以容纳 n 个元素)。如果两个栈中的元素个数之和为 n,那么任何额外的 PUSH 操作都应该导致溢出错误。 (注意:你的实现应该注意元素POP 应该与它们被 PUSH 的顺序相反)。

***我不是要答案我只是想知道...你认为他要我做什么?因为他仍然没有回复我的电子邮件,我需要在午夜之前完成。

最佳答案

“实现”一般意味着写,纯粹而简单。您的教育 worker 希望您编写能够完成作业要求的代码。

固定大小的堆栈 (n) 可以很容易地实现为具有当前堆栈深度的数组,但是你的分配有一个额外的扭曲,因为你只允许有 两个 堆栈上的 n 个元素组合在一起,而不是每个 堆栈。

我会按如下方式实现它(仅伪代码,因为它是家庭作业,无论如何,您都没有指定语言):

# Create the two stacks, each of size sz.
init_stack (sz):
allocate stack1 as array[1 to sz] of integer
allocate stack2 as array[1 to sz] of integer
set stack1sz to 0
set stack2sz to 0
set maxsz to sz

# Push the value val onto stack stk.
push_stack (stk,val):
if stk is not equal to 1 or 2:
return error
if stack1sz + stack2sz is equal to maxsz:
return error
if stk is 1:
add 1 to stack1sz
set element stack1sz of stack1 to val
else:
add 1 to stack2sz
set element stack2sz of stack2 to val

# Pop a value off stack stk.
pop_statkck (stk):
if s is not equal to 1 or 2:
return error
if stk is 1:
if stack1sz is 0:
return error
set val to element stack1sz of stack1
subtract 1 from stack1sz
else:
if stack2sz is 0:
return error
set val to element stack2sz of stack2
subtract 1 from stack2sz
return val

变量 stack1stack2stack1szstack2szmaxsz 应该以它们在函数调用之间存活的方式声明(即,不是局部变量)。所有其他的都是暂时的。

如果您在将其转换为特定语言时遇到问题,请发表评论,我会提供有关查找内容的指导。

关于stack - "Implement a stack"实际上是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225542/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com