Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C++] Prob list ordered insert

    ragazzi ho un problema con l'algoritmo list_ordered_insert, al momento che mi chiede di inserire un elemento nella lista ordinata, il programma smette di funzionare ed esce dall'eseguibile, qual'è il problema? proprio non capisco.

    codice:
    #include<iostream>
    using namespace std;
    
    typedef struct nodo
    {int info;
     nodo *link;
    }list;
    
    void create(list *&head,list *&prev,int elem);
    void stampa(list *head);
    void insert(list *&head,list *&prev,int elem);
    
    int main()
    {
    list *head=NULL,*prev=NULL;
    int elem;
    char scelta;
    do
         {cout<<"\n  Inserisci elemento in lista ";
          cin>>elem;
          create(head,prev,elem);
          cout<<"\n Vuoi inserire un altro elemento ? (Y/N) ";
          cin>>scelta;
         }
    while((scelta=='y')||(scelta=='Y'));
      cout<<"\n  La lista da te inserita è : ";
      stampa(head);
      system("PAUSE");
    
         cout<<"\n Inserisci un elemento nella lista ordinata ";
         cin>>elem;
         prev=head;
         insert(head,prev,elem);
         cout<<"\n  La lista modificata è : ";
         stampa(head);
         system("PAUSE");
           
     return 0;
    } 
     
     
     void create(list *&head,list *&prev,int elem)
          {list *new_node;
           new_node=new list;
           new_node->info=elem;
           new_node->link=NULL;
           if(head==NULL)
                {head=new_node;
                 prev=head;}
           else
                {prev->link=new_node;
                 prev=new_node;
                 }
          }           
     
     void stampa(list *head)
         {while(head!=NULL)
           {cout<<head->info;
            cout<<" ";
            head=head->link;
           }
           }
    
     void insert(list *&head,list *&prev,int elem)
          { list *temp,*new_node;
            temp=prev->link;
            new_node=new list;
            new_node->info=elem;
            new_node->link=NULL;
            if(temp=NULL)
                 prev->link=new_node;
                  
            else
                 {if(elem<head->info)
                      {new_node->link=head;
                       head=new_node;
                       }
                  else 
                      {if(elem<temp->info)
                            {new_node->link=temp;
                             prev->link=new_node;
                             }
                             else 
                                 insert(head,temp,elem);
     
                   }    
                }                      
     return; }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto, potresti fare un po' di debugging (linea per linea) per individuare quando si presenta il problema.

    Molto probabilmente, si tratta di un puntatore che assume un valore non corretto.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.