Salve, devo creare una linked list, in cui gli elementi sono stringhe, per cui ho deciso di salvarle in un array di char. Questa è la definizione della struttura list e della testa:
/*elemento della linked list*/
struct list{
char *parole[0]; /*array di char per inserire la stringa, ha un solo elemento perchè mi serve una sola stringa per elemento list*/
struct list *next;
};
/*testa della linked list*/
typedef struct stack_link{
int cnt; /*contiene il numero di elementi*/
struct list *top; /*puntatore a top*/
}stack_link;
ora vi posto le funzioni Reset (per inizializzare) e push
void Reset(stack_link *stk_l){
stk_l -> cnt = EMPTY; /*EMPTY = -1*/
stk_l -> top = NULL;
}
void Push(char *d, stack_link *stk_l){
struct list *p; /*crea un nuovo elemento*/
p = (struct list *)malloc(sizeof(struct list)); /*ne alloca lo spazio*/
p -> parole[0] = (char *)calloc(8,sizeof(char)); /*alloco lo spazio per una nuova parola*/
strcpy(p -> parole[0], d); /*gli assegna la parola*/
printf("%s\n", p -> parole[0]); /*la parola è stata copiata correttamente*/
p -> next = stk_l -> top; /*punta all'elemento precedente della lista*/
stk_l -> top = p; /*il top dello stack punterà a questo nuovo elemento*/
stk_l -> cnt++; /*incremento il contatore degli elementi*/
printf("controllo inserimento: %s\n", stk_l -> top -> parole[0]);
}
quando faccio il controllo, cioè printf("controllo inserimento: %s\n", stk_l -> top -> parole[0]); mi da un errore...ma non capisco perchè, visto che p-> parole[0] se controllate contiene in modo corretto la parola, mentre poi si perde!! che errore c'è nella funzione???
cmq se invece di implementarla con gli array di char la implemento con i char, funziona tranquillamente.
grazie