Linked list con array di caratteri

di il
1 risposte

Linked list con array di caratteri

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

1 Risposte

  • Re: Linked list con array di caratteri

    Ciao, l'unico errore che hai commesso e stato quello che dichiarare il campo parole della struttura list come un vettore di puntatori a char di dimensione zero. Questa è la nuova dichiarazione:
    /*elemento della linked list*/
    struct list{
       char *parole[1];         /*array di char per inserire la stringa, ha un solo elemento perchè mi serve una sola stringa per elemento list*/
        struct list  *next;
    };
Devi accedere o registrarti per scrivere nel forum
1 risposte