【发布时间】:2012-05-13 17:54:26
【问题描述】:
我是 C 新手,正在尝试使用链表实现堆栈。目前正在设置堆栈,到目前为止一切都很好。当我尝试将新节点推送到列表中时,问题就出现了。 我目前有
在main() 中,push() 被调用:
push(&(s.head), 'r');
函数push是:
void push(StackNodePtr *topPtr, char value){
printf("topPtr value %c", (*topPtr)->data); // - Is currently 'p'
StackNodePtr sNP;
sNP = malloc(Node_Size);
sNP->data = value; // - Is currently 'r'
sNP->nextPtr = *topPtr;
printf("\nsNP value - %c", sNP->nextPtr->data); // Prints p... cool
topPtr = &sNP; // Just assigned it???
printf("\ntopPtr at end of push = %c", (*topPtr)->data); // prints r... cool
// WHY YOU NO REFERENCE sNP LATER!?!?
}
同时,回到主目录:
printf("\non the stack...%c", stackTop(s.head)); // prints 'p'
它似乎在 push 中工作正常,但是我在 topPtr 指向的节点上调用 printf(),并改为打印出 topPtr 的值(在本例中为“p”)。就我所做的狩猎而言,它看起来和感觉都是正确的,我不知道我错过了什么。
可能是我在topPtr = &sNP;做过的地方吗?
任何朝着正确方向的“推动”都是好的推动……
【问题讨论】:
标签: c pointers reference stack