Lorsque j'essaie de pousser des éléments dans une pile, j'obtiens une erreur de segmentation, mais si j'ouvre l'adresse de la pile (je les ai marqués avec "!!!") et ses symboles, elle l'accepte. Mais cette fois dans chaque poussée, il crée une nouvelle adresse et n'augmente pas la valeur maximale.c pointeur en tant qu'entrées
typedef struct
{
struct table **symbols; // array of the stack
int top; //index of the top element
int size; //maximum size of the stack
}stack;
void push(stack *stck,struct table *element)
{
if(stck->top == stck->size)
{
printf("stack is full");
return;
}
stck = malloc(sizeof(stack)); !!!
stck->symbols = (struct table **)malloc(50 * sizeof(struct table*)); !!!
printf("top : %d\n",stck->top);
stck->top = stck->top++;
printf("%d"&stck->top);
stck->symbols[stck->top] = element;
printf("top : %d\n",stck->top);
}
Toute votre logique est complètement faux. La conversion ne fera pas vraiment pointer un pointeur vers une adresse de pointeur. Vous devez remplir tout manuellement avec une boucle, et allouer de l'espace pour chaque ligne de la «table» –