Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C] creare liste

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    29

    aiutoooooooooooooooo LISTE

    perkèèèèèèèèèèèèèèèèèèèèèèèèèèè non funziona?! è una stupidata compiata x lo + dal programma che cè nella sezione programmazione c:


    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>


    struct elemento{
    int info;
    elemento *next;
    };

    struct elemento *crea(elemento *n);
    void stampa (elemento *n);


    int main()
    {
    clrscr();

    elemento *lista=NULL;
    char risposta[2];
    do{
    lista=crea(lista);
    cout<<"vuoi inseririre un altro valore?"<<endl;
    cin>>risposta;}while(strcmp(risposta,"si")==0);

    stampa(lista);
    }

    struct elemento *crea(elemento *p)
    {
    elemento *coda;
    int valore;

    cout<<"inserisci un valore"<<endl;
    cin>>valore;

    if(p!=NULL) /*in coda*/
    {
    elemento *coda=new elemento;
    coda->info=valore;
    coda->next=p;
    }
    else /*nuova*/
    {
    elemento *p= new elemento;
    p->info=valore;
    p->next=NULL;
    coda=p;
    }
    return(coda);
    }

    void stampa(elemento *p)
    {
    cout<<"LISTA:"<<endl;
    if(p==NULL)
    cout<<"VUOTA";
    else
    cout<<p->info<<endl;
    while(p!=NULL)
    {
    cout<<p->info<<endl;
    p=p->next;
    }
    getch();
    }

    ma non è che devo stampare un elemento alla volta?perkè se inserisco solo 1 elemento quando la lista è vuota funziona.......

  2. #2
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    ti inviterei a dare una lettura al nostro regolamento

    il linguaggio va indicato nel titolo, che dovrebbe essere meno generico (vedi punto 2)
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  3. #3
    Ciao, il codice che hai scritto mi pare un pò confusionario... questo dovrebbe creare una lista:

    codice:
    struct nodo{
    	int info;
    	nodo *next;
    };
    	
    nodo *lista1 = new nodo;
    lista1->info = //quello che vuoi
    lista1->next=NULL;
    
    for (int i=0; i<10; i++){
    	nodo *temp = new nodo;
    	temp->info = //un qualsiasi valore
    	temp->next = lista1;
    	lista1 = temp;
    }

    mentre questo dovrebbe stamparla:

    codice:
    void stampa(nodo *lista){
    	if (lista == NULL)
    		cout << "FINE LISTA 	\n";
    	else{
    		cout << lista->info << "\n";
    		stampa(lista->next);		
    
    
    		
    	}
    }
    ciao

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    a me piu che C pare C++
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  5. #5
    scusa hai ragione... basta che sostituisci cout e cin con printf e scanf.... ciao!

  6. #6
    codice:
    void stampa(nodo *lista){
    	if (lista == NULL)
    		cout << "FINE LISTA 	\n";
    	else{
    		cout << lista->info << "\n";
    		stampa(lista->next);		
    
    
    		
    	}
    }
    praticamente

    printf("FINE LISTA \n");

    printf ("%d",lista->info);

    o almeno mi pare...

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    29
    si........ ma la questione non è se è c o c++............ho sbagliato a scrivere è ho messo c,MA nel fatto che non mi funge!!!!!!!!!!!!
    da questo preciso punto:
    [CODE]
    struct elemento *crea(elemento *p)
    {
    elemento *coda;
    int valore;

    cout<<"inserisci un valore"<<endl;
    cin>>valore;

    if(p!=NULL) /*in coda*/
    {
    elemento *coda=new elemento;
    coda->info=valore;
    coda->next=p; QUI PROPRIOO VENGONO CAMBIATI I VALORI DI CODA(SIA INFO CHE NEXT)
    CON VALORI CHE NON SO DA DPOVE SALTAN FUORI E NON TORNA NIENTE,PERKè?!!!!!
    }
    else /*nuova*/
    {
    elemento *p= new elemento;
    p->info=valore;
    p->next=NULL;
    coda=p;
    }
    return(coda);
    }

  8. #8
    codice:
    if(p!=NULL) /*in coda*/ 
    { 
    elemento *coda=new elemento; 
    coda->info=valore;              
    coda->next=p;                   QUI PROPRIOO VENGONO CAMBIATI I VALORI DI CODA(SIA INFO CHE NEXT) 
    CON VALORI CHE NON SO DA DPOVE SALTAN FUORI E NON TORNA NIENTE,PERKè?!!!!!
    } 
    else /*nuova*/ 
    { 
    elemento *p= new elemento; 
    p->info=valore; 
    p->next=NULL;                    
    coda=p; 
    } 
    return(coda); 
    }
    codice:
    
    
    forse ho trovato l'errore...

    prova cosi:

    codice:
    
    if(p!=NULL) /*in coda*/ 
    
    { 
    
    elemento *coda=new elemento; 
    
    coda->info=valore; 
                 
    coda->next=p->next;
    
    p = coda;
    
     
    //e naturalmente return(p);
    non ho potuto provarlo... dimmi se funzia... ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    29
    no non funziona,ora facendo così e facendo tornare p anche nella parte "nuova" in p->next=NULL i valori vengono cambiati!!!!


    codice:
      
    else /*nuova*/ 
    { 
    elemento *p= new elemento; 
    p->info=valore; 
    p->next=NULL; 
    } 
    return(p);

  10. #10
    non capisco... c'è bisogno di un esorcista... io ho sempre gestito le liste in modo ricorsivo e non ho mai avuto problemi... mi pare di aver tradotto fedelmente il mio algoritmo ricorsivo in iterattivo... boh...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.