Stampare lista al contrario

di Piquels9000 il
4 risposte
Salve a tutti! Vorrei una mano con il mio programma perchè non saprei come stampare la lista al contrario (void stampalista(Tlista l)), ho provato in vari modi ma non riesco. ringrazio in anticipo per le risposte
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

/*------------------------------------------------NODO----------*/
typedef struct Snodo{
    char par[25];
    struct Snodo* next;
}Tnodo;

/*------------------------------------------------PUNTATORE AL NODO----------*/

typedef Tnodo* Pnodo;


/*------------------------------------------------LISTA----------*/

typedef struct Slista{
    Pnodo testa;
    int N;
}Tlista;

/*------------------------------------------------PROTOTIPI FUNZIONI----------*/
Tlista crealista();
Tlista aggiungiInTesta(Tlista l,char* T);
void stampalista(Tlista l);
/*------------------------------------------------MAIN----------*/

int main()
{
    Tlista l;
    char testo[2000];
    char* token;

    printf("inserire un testo libero massimo 2000 caratteri:\n");
    gets(testo);

    l=crealista();

    token=strtok(testo," ");
    while(token!=NULL){
        l=aggiungiInTesta(l,token);
        token=strtok(NULL," ");
    }
    /*stampa di prova*/
    stampalista(l);


    return 0;
}
/*------------------------------------------------IMPLEMENTO FUNZIONI----------*/
Tlista crealista(){
    Tlista ris;
    ris.testa=NULL;
    ris.N=0;
}
Tlista aggiungiInTesta(Tlista l,char* T){
    Pnodo nuovonodo;
    /*allocazione nuovo nodo*/
    nuovonodo=malloc(sizeof(Tnodo));
    /*inserimento valore nodo*/
    strcpy(nuovonodo->par, T);
    /*aggiornamento puntatori*/
    nuovonodo->next=l.testa;
    l.testa=nuovonodo;
    l.N++;
    return l;
}


void Stampalista(Tlista l) {
    Pnodo p1;
    p1=l.testa;
    while(p1!=NULL){
        p1=p1->next;
    }
    while(p1!=l.testa){
        printf("%s ", p1->par);
    }
    return;
}

4 Risposte

  • void stampalista(Pnodo p);
        /*stampa di prova*/
        stampalista(l.testa);
    void stampalista(Pnodo p) {
        if(p == NULL)
            return;
        stampalista(p->next);    
        printf("%s ", p->par);
    }
  • Mi da comunque errore non capisco perchè esce scritto undefinied reference to stampalista ||error: ld returned 1 exit status|
    mi da l'errore su stampalista(p->next);
  • Grazie mille non so che ci è preso a codeblock XD
    ok funziona adesso grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte