저는 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'
보인다 푸시에서 잘 작동하려면, 하우 ver topPtr
이 가리키는 노드의 printf()
과 그 대신 topPtr
이라는 값이 사용되었습니다 (이 경우 'p'). 내가 한 사냥에서 알 수있는 한, 그것은 겉으로보기에는 정확하고 나는 무엇을 놓쳤는 지 모른다.
내가 한 곳일 수 있습니까 topPtr = &sNP;
?
올바른 방향으로 모든 "푸시"
네, typedef에 대한 권리가 있으며 작동하지 않는 이유를 설명해 주셔서 감사합니다. 나는 그것이 시야와 관련이 있다고 느꼈지만 원인이 무엇인지는 알 수 없었다. 제가 왜 이렇게하고 있는지에 관해서는, 저에게 요청 된 것이지요. 그러나 이제 나는 그것의 나머지 부분을 다룰 수 있어야합니다. 감사! – Tony