私はCの新機能であり、リンクリストを持つスタックを実装しようとしています。現在スタックをセットアップしています。新しいノードをリストにプッシュしようとすると、問題が発生しています。 main()
でCリンクリストスタックとポインタ
、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 ver topPtr
が指し示すノードのprintf()
と、代わりにtopPtr
という値(この場合は 'p')が表示されます。私が行った狩りからわかる限り、それは見た目と正しいことを感じています。私が逃したものは分かりません。
私が行った場所はどこですか?topPtr = &sNP;
?
右方向に任意の「プッシュ」良いプッシュです...
はい、あなたはtypedefに関して正しいです、そして、それがうまくいかなかった理由を説明してくれてありがとう。私はそれが可視性と関係があると感じていたが、その原因は不明であった。私がなぜこのようにしているのかについては、私に求められているものですが、今は残りの部分を処理できるはずです。ありがとう! – Tony