Stampare lista al contrario

di il
4 risposte

Stampare lista al contrario

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

Devi accedere o registrarti per scrivere nel forum
4 risposte