Oppure

Loading
27/11/09 20:15
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];
			   int matricola;
               lista * next;
};
typedef lista * p;
int i=0;
int vet[1];
int menu();
void cancella(p, char[max],int i,int m);
void stampa(p);
p crea(int n);
p inserisci(p,p);
void cerca(p);
void cercacognome(p);
void cercanascita(p);
void cercaclasse(p);
void cercamatricola(p);
int main()
{
 int scelta;
    char x[max];
    p temp=NULL,l=NULL,f;
	int m=0;
    int n=0;
	do
    {
        scelta=menu();
        switch(scelta)
        {

                case 1:
				
				n++;
				temp=crea(n);
                l=inserisci(l,temp);
				f=l;
                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=f;
                cancella(l,x,i,m);
				break;
				case 4:
				cerca(l);
                break;
				case 5:
				cercacognome(l);
				break;
				case 6:
				cercaclasse(l);
				break;
				case 7:
				cercanascita(l);
                break;   
				case 8:
				cercamatricola(l);
				break;
		}
    }
    while(scelta!=9);
    system("pause");
}



void cancella(p l,char x[],int i,int m)
{
          system("cls");
          p temp=l;
          if(l!=NULL)
          { 
              
              while(strcmp(l->info,x)!=0)
              {      
				  temp=l;
				  l=l->next;
				  
                    
              }
              
              temp->next=l->next;
			  delete l;
			  
           
         }
		 else
		 {
			 cout<<"errore"<<endl;
		 }
}









come posso evitare in fase di cancellazione che la lista venga persa nel caso in cui venga eliminato la testa della lista?
aaa
27/11/09 20:52
HeDo

per cancellare la testa basta ritornare come testa il secondo elemento e deallocare la testa iniziale.
aaa