【问题标题】:how to display size of stack after all operations所有操作后如何显示堆栈的大小
【发布时间】:2019-12-29 14:41:03
【问题描述】:

我遇到了一个问题,我必须在使用数组的所有操作之后显示堆栈的大小

在所有操作之后,我没有得到任何适当的逻辑来显示堆栈的大小 我得到的只是显示堆栈元素的遍历代码。 但不是手术后的尺寸。

for (i = TOP - 1; i >= 0; i--) // for traversing stack
{
    printf("\n%d",stack[i]);
}

它应该在所有操作完成后显示堆栈的大小,即push()pop()

【问题讨论】:

  • 能否给stack的声明?
  • 堆栈的“大小”是多少?堆栈上的项目数?那只是TOP。 (因为,从您提供的少量代码来看,您似乎在数组中实现了一个堆栈,其中第一项为零,TOP 作为堆栈中的项目数,所以TOP-1 是堆栈上的顶部项目。)如果堆栈的“大小”有其他含义,则必须定义它。
  • 恕我直言需要编辑

标签: c arrays data-structures stack


【解决方案1】:

只需将一个元素的大小乘以堆栈中的元素数量即可:

totalSize = stack.size() * sizeof(stack.top());

【讨论】:

  • @EricPostpischil 哎呀,真的!
  • stack.sizestack.top 是 C++ 的东西。这是一道 C 题。
  • @EricPostpischil 是的,我的意思是,除非 OP 澄清 stack 实际上是什么,否则这些只是作为类比,但他可以检索堆栈的大小或顶部。
【解决方案2】:

我可以建议的是,您可以保留另一个由顶部元素组成的堆栈作为堆栈的大小,与它平行,例如 (size_stack)。每次你将一些东西压入堆栈时,获取 size_stack 的顶部,将其递增并将其压入 size_stack。同样,在每次弹出时,将两个堆栈一起弹出。这样,您无需迭代即可在每次操作中获得堆栈的大小。空间 => O(元素)和时间 => O(操作)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2013-12-22
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多