Chiarimento su caratteri in una lista concatenata

di il
4 risposte

Chiarimento su caratteri in una lista concatenata

Salve ragazzi vorrei un chiarimento su un passo cruciale della realizzazione di liste concatenate dinamiche con stringhe...allora vi spiego

Canonicamente per la realizzazione di liste concatenate con allocazione dimaniche si fa in tal modo

<<<si dichiara la struttura>>>>
struct elemento{
int value
struct *next};


int main(){
int primo
struct elemento *p,*punt_testa,*scorri;

<<domando all'utente di inserire il primo elemento>>
printf("inserisci");
scanf("%d/n",&primo);

<<<<creo con la funzione malloc per il primo nodo>
p=(struct elemento*)malloc(sizeof(struct elemento));
p->value=primo;
p->next=NULL;
p=scorri;
p=punt_testa;
<<<<<<e il seguito per l'inserimento degli altri valori>>>>

se pero dichiaro una struttura del seguente tipo cioè con la stringa:
struct nome{
char nome[20];
struct nome *next;};

int main(){
struct nome *p,*punt-testa,*scorri
char *nome;

inserisci(nome) <<<<< PS: so di dover definire la funzione inserisci della libreria ctype>>>>
p=(struct nome*)malloc(sizeof(struct nome));
p->nome=inserisci(nome) <<<<<IL COMPILATORE MI SEGNALA UN ERRORE PERCHE COME LO SS RISOLVO>>>>


.ho pensato che forse ci vuole una altra funzione malloc per la stringa...spero di essere stato chiaro grz..

4 Risposte

  • Re: Chiarimento su caratteri in una lista concatenata

    La malloc() è corretta, allochi la dimensione corretta perchè fai un sizeof della struttura.
    Il tuo problema è che forse non conosci bene le stringhe C: non puoi fare
    p->nome=inserisci(nome)
    al limite devi usare strcpy
    inserisci(nome)
    strcpy(p->nome, nome);
  • Re: Chiarimento su caratteri in una lista concatenata

    In effetti, prima delle liste è meglio che tu dia una "ripassata" all'uso delle stringhe ... ti servirà tanto in seguito.
  • Re: Chiarimento su caratteri in una lista concatenata

    Problema risolto mi resta solo un unico problema che quando cerco di stampare la lista concatenata,ricordo definita in tal modo:
    struct cognome{
    char nome[20];
    struct cognome *next};

    mi delinea un breakpoint e nn so se e giusto il comando o no....ve lo posto

    while(punt_testa!=NULL){
    printf("%s/n",punt_testa->nome)
    punt_testa=punt_testa->next;
  • Re: Chiarimento su caratteri in una lista concatenata

    La risoluzione del primo problema lo trovata facendo semplicemente un printf e uno scanf con %s...........che è senza dubbio il metodo più facile
Devi accedere o registrarti per scrivere nel forum
4 risposte