私は 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'
プッシュでは問題なく動作するようですが、ポイントしprintf()
たノードと、代わりに出力されてtopPtr
いた値(この場合は「p」) を呼び出します。topPtr
私が行ったハンティングからわかる限り、見た目も感触も正しく、何を見逃したのかわかりません。
それは私がやった場所topPtr = &sNP;
でしょうか?
正しい方向への「プッシュ」は、良いプッシュです...