25/11/09 15:09
matteog
#include "stdafx.h" #include <iostream> #include <cstdlib> #include <string.h> #include <stdio.h> #define max 50 using namespace std; struct lista { char info[max]; char cognome[max]; char classe[max]; char nascita[max]; char matricola[max]; lista * next; }; typedef lista * p; int i=0; int menu(); p cancella(p, char[max],int i); void stampa(p); p crea(); p inserisci(p,p); void cerca(p); int main() { int scelta; char x[max]; p temp=NULL,l=NULL; do { scelta=menu(); switch(scelta) { case 1:temp=crea(); l=inserisci(l,temp); break; case 2: cout<<"la lista e' \n"; stampa(l); cout<<"\n"; break; case 3:cout<<"inserisci il nome da cancellare\n"; cin>>x; l=cancella(l,x,i); break; case 4: cerca(l); break; } } while(scelta!=5); system("pause"); } int menu() { int scelta; cout<<"1.inserisci un nuovo nome\n"; cout<<"2.stampa la lista\n"; cout<<"3.cancella un nome\n"; cout<<"4.ricerca\n"; cout<<"5.cancella\n"; cin>>scelta; return scelta; } p cancella(p l,char x[],int i) { system("cls");//non mi funziona la funzione sapete aiutarmi?? p temp=NULL; if(l!=NULL) { while(l->info[i]!=x[i]) { l->next=cancella(l->next,x,i++); } temp=l; l=l->next; delete temp; i++; return l; } } p crea() { system("cls"); p temp; temp=new lista; cout<<"dammi il nome\n"; fflush(stdin); gets(temp->info); cout<<"dammi il cognome di "<<temp->info<<endl; fflush(stdin); gets(temp->cognome); cout<<"dammi la classe di "<<temp->info<<endl; fflush(stdin); gets(temp->classe); cout<<"dammi la data di nascita "<<temp->info<<endl; fflush(stdin); gets(temp->nascita); cout<<"dammi la matricola di "<<temp->info<<endl; fflush(stdin); gets(temp->matricola); temp->next=NULL; return temp; } p inserisci(p l,p nodo) { system("cls"); if(l!=NULL) { if(l->info[0]>nodo->info[0]) { nodo->next=l; return nodo; } else { l->next=inserisci(l->next,nodo); return l; } } return nodo; }
Se inserisco molte persona il programma impazzisce nella cancellazione e non capisco perchè!cosa ho sbagliato?
Ultima modifica effettuata da HeDo 25/11/09 19:09
aaa