对于作业,我将使代码实现完全动态化。我们的教授为我们提供了一个.c文件,它有几个实现,如pop和push。我们预先定义的堆栈容量是128.我们要做到这一点并且是动态的#34;通过检查堆栈上的推送操作是否超过预定义的堆栈容量。
我对如何做到这一点感到困惑。我不能在某处包含if语句来检查容量是否大于堆栈,如果是,只需分配两倍的容量并创建一个新堆栈?
任何想法都表示赞赏。
答案 0 :(得分:2)
将评论转移到答案中。
是的,您可以在某处添加if
语句,但push()
功能是最佳选择。这是最好的,因为它是您知道如果您处于当前限制需要更多容量的地方。除非你有'增加容量'功能,否则只有push()
函数可能需要增加堆栈,因此这是测试是否需要向堆栈添加更多内存的唯一地方。
请注意,您当前在堆栈大小上有一个固定的上限。你需要把它变成一个变量。记得仔细考虑初始化条件。