【发布时间】:2020-05-12 07:09:28
【问题描述】:
教授要求写一个堆栈,然后在C中定义push和pop的函数。提示是使用堆栈指针和数组,但似乎我无法正确执行(我没有理解课程我想)。你能帮我解决吗?
【问题讨论】:
标签: stack push stack-pointer
教授要求写一个堆栈,然后在C中定义push和pop的函数。提示是使用堆栈指针和数组,但似乎我无法正确执行(我没有理解课程我想)。你能帮我解决吗?
【问题讨论】:
标签: stack push stack-pointer
在堆栈中,push 将一项添加到堆栈中。 pop 删除最后添加的项目。
如果您有一个数组,将其命名为 a 一定长度,len 和一个索引,将其命名为 i,然后您可以实现一个简单的堆栈。
initialize a with length len
i = 0
现在,要推送一个项目,您将项目添加到索引i 处的数组中,然后增加索引。但是你必须确保你不会溢出堆栈:
if (i >= len) {
/* error, stack is full */
} else {
a[i] = new_item
i = i + 1
}
要弹出一个项目,您将 i 减 1,并返回数组中该位置的值。但首先你必须确保堆栈上有东西:
if (i == 0) {
/* error, stack is empty */
}
else {
i = i - 1;
return a[i];
}
【讨论】: