我有一个元素堆栈,必须从中删除一个随机元素(即顶部和该特定元素之间的所有元素将被弹出并再次推送)。每次弹出一个元素时,我们都必须确定其他元素之前已弹出该元素的次数。
我已经从事这个工作很长时间了。 (堆栈是动态的(即不时添加和删除元素)。
最佳答案
如果我理解正确的话,您有自己的堆栈结构,并且想要计算特定元素的推送和弹出次数。如果是这种情况,您可以将数据包装在 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/