我疯狂地试图找出这个与现实/我的代码没有明显联系的错误消息。我一直在这里搜索并得出一个结论:你会讨厌 typedef 隐藏的指针。抱歉,这超出了我的控制范围——教授以这种方式提供了代码。我正在编辑问题中指定的代码。我弹出完整节点以避免每个推送函数上的 malloc 调用并将它们存储在辅助堆栈中。 MakeEmptyS 函数用 INITIAL_SIZE 节点初始化堆栈。 GrowEmptyS 将更多节点添加到空节点堆栈中
stack.c有以下功能:
void
MakeEmptyS( Stack S )
{
PtrToNode tmp;
if ( S == NULL )
Error( "Must use CreateStack first" );
else
{
GrowEmptyS( S, INITIAL_SIZE);
while (!IsEmptyS( S) )
{
tmp = TopopNode( S );
PushEmpty( S, tmp);
}
}
}
我收到此错误:“Stack.c:53:22:错误:‘=’标记之前的预期表达式”,其中第 53 行是 GrowEmptyS( S, INITIAL_SIZE );
作为参考,这里是 Grow 函数:
void
GrowEmptyS( Stack S, int NumToAdd )
{
int i;
PtrToNode TmpCell;
for( i = 0; i < NumToAdd; i++ )
{
TmpCell = malloc( sizeof(struct Node));
if ( TmpCell == NULL )
FatalError( "Out of Space!!!");
else
PushEmpty(S,TmpCell);
}
}
我可能是错的,但可能你定义了
#define INITIAL_SIZE = 1024
例如。
您应该删除=。
正确的定义是
#define INITIAL_SIZE 1024
作为建议,函数参数应以小写开头,而不是大写:)
void GrowEmptyS(Stack stack, int numToAdd)
更容易阅读。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)