(wahrscheinlich ist es eine dumme Sache, aber) Ich habe ein Problem mit einer Stack-Implementierung in C-Sprache, wenn ich versuche, es zu leeren, die Funktion zum Leeren des Stapels macht eine Endlosschleife die Spitze des Stapels ist nie Null. wo ich einen Fehler begehen? danke bye!
#include <stdio.h>
#include <stdlib.h>
typedef struct stack{
size_t a;
struct stack *next;
} stackPos;
typedef stackPos *ptr;
void push(ptr *top, size_t a){
ptr temp;
temp = malloc(sizeof(stackPos));
temp->a = a;
temp->next = *top;
*top = temp;
}
void freeStack(ptr *top){
ptr temp = *top;
while(*top!=NULL){
//the program does an infinite loop
*top = temp->next;
free(temp);
}
}
int main(){
ptr top = NULL;
push(&top, 4);
push(&top, 8);
//down here the problem
freeStack(&top);
return 0;
}