我在C中实现了一个堆栈。我给出的任务要求我使用数组的第一个元素作为顶部。
例如:
如果我有struct
:
struct stack {
int arr[MAX];
int top
};
我需要将arr的第一个元素(即arr[0]
)分配到顶部,然后实现堆栈。
我没有得到问题,因为top通常会被分配值-1
,因此会递增或递减。我到底需要做什么?
答案 0 :(得分:0)
这是一个相当奇怪的要求,因为实现堆栈的最自然的方法是使用数组的 last 元素作为顶部,在数组的末尾添加新元素并删除它们从最后开始。
这样你就可以满足堆栈的LIFO要求,也可以避免像在数组开头添加和删除元素一样移动数组中的其余数据。
此外,我不确定你的结构的顶级成员应该做什么,但是这里最自然的方法是指出什么是最后一个元素当前的数组(即堆栈的顶部)。因此,在我看来,顶部成员应该包含数组中最后一个元素的索引,并且通过执行stack.arr[stack.top]
,您将检索该元素的顶部元素叠加。