我有一个这样的代码,可以通过使用堆栈来反转单链表。但是当我调用pushStack函数时,我会得到这样的错误"应为"int*",但参数的类型为"int">
{
// store Node addresses in stack
struct STACK *stk;
struct Student* ptr = head;
while (ptr != NULL) {
pushStack(stk, ptr->studentnumber);
ptr = ptr->next;
}
// print data from stack
while (!emptyStack(stk)) {
printf(stk->top);
pop(); // pop after print
}
}
这是我的pushStack函数;
bool pushStack (struct STACK* stack, int *dataInPtr)
{
// Local Definitions
STACK_NODE* newPtr;
// Statements
newPtr = (STACK_NODE* ) malloc(sizeof(STACK_NODE));
if (!newPtr)
return false;
newPtr->dataPtr = dataInPtr;
newPtr->link = stack->top;
stack->top = newPtr;
(stack->count)++;
return true;
} // pushStack
我在结构中将studentnumber定义为一个整数。据我所知,我需要将列表转换为多链接列表,因此通过这种方式,我可以将studentnumber作为指针传递,但我希望它保持为单链接列表。如果有人有意见,我该怎么办
好吧,您得到的错误是因为当您这样调用pushStack
函数时:pushStack(stk, ptr->studentnumber)
,您指定的第二个参数是int
,但您需要int *
。所以它必须是这样的:pushStack(stk, &ptr->studentnumber)
。这只涉及你得到的错误,我不确定你提供的代码是否符合预期。