Я пытаюсь написать отдельный файл с вспомогательными функциями для операций со стеком. Я хочу передать вершину стека по ссылке в качестве аргумента для операций стека из основного файла.
Поскольку top модифицируется, я передаю указатель top по ссылке. Но даже тогда это не работает. Где я ошибаюсь?
P.S.: Я знаю, что это не лучший способ реализации стека, но я просто хотел понять, почему он не работает.
//Стек.h
void print(stacknode **P)
{
stacknode *S;
S=*P;
printf("Printing stack from top to bottom...\n");
stacknode *temp=S;
while(temp != NULL)
{
printf("%d\t", temp->data);
temp=temp->next;
}
printf("\n");
}
void push(stacknode **P, int n)
{
stacknode *S;
S=*P;
stacknode *new=(stacknode *)malloc(sizeof(stacknode));
new->data=n;
new->next=S;
S=new;
print(&S);
}
//main.c
main()
{
printf("Creating new stack...\n");
stacknode *S=NULL;
printf("Pushing first number....\n");
push(&S, 2);
print(&S);/*Prints nothing*/
}
S=*P;
делает копию*P
. НазначениеS
не меняет*P
. - person chris   schedule 17.07.2014int
. - person Deduplicator   schedule 17.07.2014