c - 如何计算特定项目从堆栈中弹出的次数?

标签 c algorithm data-structures

我有一个元素堆栈,必须从中删除一个随机元素(即顶部和该特定元素之间的所有元素将被弹出并再次推送)。每次弹出一个元素时,我们都必须确定其他元素之前已弹出该元素的次数。

我已经从事这个工作很长时间了。 (堆栈是动态的(即不时添加和删除元素)。

最佳答案

如果我理解正确的话,您有自己的堆栈结构,并且想要计算特定元素的推送和弹出次数。如果是这种情况,您可以将数据包装在 struct 中,并让堆栈存储此 struct 的列表(无论堆栈的内部实现是什么):

struct stack_data {
   unsigned push_count;
   unsigned pop_count;
   void *data; /* or whatever type the data is */
};

...

void stack_push(/* stack argument */, struct stack_data *data)
{
   ...
   data->push_count++;
}

void stack_pop(/* stack argument */, struct stack_data *data)
{
   ...
   data->pop_count++;
}

关于c - 如何计算特定项目从堆栈中弹出的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620542/

相关文章:

c - C 中宏的问题

在 C 中更改工作目录?

algorithm - Range 查询反转次数 O(lg N)

c - fread() 的意外返回值

使用 TextMate 编译 C 代码

python - Mastermind 极小极大算法

ruby - 对可能包含时间或距离的字符串进行排序

algorithm - 查找从一个图节点到另一个图节点的所有路径的逻辑

c++ - 为什么在 Windows 和 Mac OS 中运行 UnionFind 时会存在大量运行时差异?

algorithm - 修改深度优先搜索