我是C新手,正在嘗試使用鏈接列表實現堆棧。目前建立的堆棧,迄今爲止都很好。當我嘗試將新節點推入列表時,問題就出現了。 我現在有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'
似乎在推動下正常工作,howe我在topPtr
指向的節點上調用printf()
,而topPtr
用於打印的值(在本例中爲'p')。據我所知,我從狩獵中得知,它看起來和感覺都很正確,我不知道我錯過了什麼。
難道我在那裏做過topPtr = &sNP;
?
在正確的方向上沒有任何「推」是一個很好的推動......
是的,您對typedef是正確的,並感謝您解釋爲什麼它不起作用。我有一種感覺,這與能見度有關,但至於原因是什麼,並不知道。至於我爲什麼這樣做,這正是我所要求的,但現在我應該能夠處理其餘的問題。謝謝! – Tony