Кажется, что прототип push/pop
выглядит следующим образом.
void push (stack *, int);
void pop (stack *);
В этом случае у вас неопределенное поведение.
n = pop(&s);
push(&s,n);
push(&s1,n);
Вышеуказанные вызовы в функции DuplicateStack
на самом делепередача функции stack **
в push/pop
вместо stack *
. Поскольку s
и s1
уже stack *
, &s
и &s1
дают вам stack **
.
Попробуйте изменить их на.
void DuplicateStack(stack *s, stack *s1){
int n;
stack s3;
CreateStack(&s3);
while(!isEmpty(s)){
n = pop(s); // <<<-- &s to s
push(&s3,n);
}
while(!isEmpty(&s3)){
n = pop(&s3);
push(s,n); // <<<--- &s to s
push(s1,n); // <<<----&s1 to s1
}
}