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; }