C语言 使用数组的第一个元素作为 top 实现堆栈



我正在用C实现一个堆栈。分配给我的任务要求我使用数组的第一个元素作为 top。例如:如果我有struct

struct stack {
    int arr[MAX];
    int top
};

我需要分配 arr 的第一个元素(即 arr[0] ( 到顶部,然后实现堆栈。

我不明白这个问题,因为 top 通常被分配-1值,并相应地递增或递减。我到底需要在这里做什么?

这是一个相当奇怪的要求,因为实现堆栈的最自然方法是通过在数组末尾添加新元素并从末尾删除它们来使用数组的最后一个元素作为顶部。

这样,您将满足堆栈的LIFO要求,并避免像在数组开头添加和删除元素那样移动数组中的其余数据。

我也不确定你的结构的顶部成员应该做什么,但这里最自然的事情是某种方式来指示当前数组的最后一个元素是什么(即堆栈的顶部(。所以在我看来,top成员应该包含数组中最后一个元素的索引,通过stack.arr[stack.top]您将检索堆栈的top元素。

最新更新