Affichage après Suppression element Listes Chainées
Bonjour à tous! Je suis entrain de faire une petite application sur les LinkedList ~~ Autrement les liste chainées. Et mon problème se trouve au niveau de la suppression d'un node dans la chaine.
Voici mon code pour la declaration de ma structure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
struct _CUSTNAME;
typedef struct _CUSTNAME {
struct _CUSTNAME *NextCustomer; // Link to next, or NULL if none
struct _CUSTNAME *PrevCustomer; // Link to previous, or NULL if none
char Cust_Name[50]; // 50 chars for name;
char Trans_Description[50]; // 50 chars for trans descrip;
int Cust_Number;
int nRecordNumber; // Which record number?
} CUSTNAME;
typedef CUSTNAME *NPCUSTNAME;
typedef CUSTNAME *PCUSTNAME;
FILE *DataFile;
PCUSTNAME FirstCustomer = NULL;
PCUSTNAME LastCustomer = NULL;
PCUSTNAME Customer = NULL;
PCUSTNAME TempCustomer = NULL; |
Et ici mon code pour supprimer un élément dans la liste
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
void removeNodeAt()
{
printf("Display customers\n");
// ici est mon code pour afficher les données de la liste avant suppression et il n'ya pas de problème a ce niveau
// Après affichage je demande de choisir le numero a supprimer
printf ("Please enter the customer number to remove : ");
scanf("%d",&RemoveNumber);
TempCustomer = FirstCustomer;
found =0;
do{
if (TempCustomer->Cust_Number==RemoveNumber)
{
found=1;
//J'avais mis ce code mets cela me generait une erreur du genreUnhandled exception at .... and Access violation reading location...je l'ai donc mis en commentaire pour juste supprimer mon element et afficher la liste après suppression...
/*TempCustomer->PrevCustomer->NextCustomer=TempCustomer->NextCustomer;
TempCustomer->NextCustomer->PrevCustomer=TempCustomer->PrevCustomer;*/
free(TempCustomer);
}else
TempCustomer=TempCustomer->NextCustomer;
}while((TempCustomer) && (!found));
/* Display the list */
TempCustomer = FirstCustomer;
printf("\n List after deletion \n");
// TempCustomer = TempCustomer->NextCustomer;
while (TempCustomer)
{
printf("Name '%s' CustNumb '%d' TransDescr '%s' \n",TempCustomer->Cust_Name,TempCustomer->Cust_Number,TempCustomer->Trans_Description);
TempCustomer = TempCustomer->NextCustomer;}
} |
Et mon problème se trouve a ce niveau de l'affichage..J'ai l'impression que mon élément est bien supprimé mais l'affichage pose problème car si par exple j'ai 3 elements ..j'arrive à afficher les 2 elements non supprimés par contre la ligne supprimée est affichée avec des plein de lettres bizarres.... :cry: Et cela me plante mon programme avec un message :
Code:
1 2
|
Unhandled exception at 0x0041207b in LinkedList.exe: 0xC0000005: Access violation reading location 0xfeeeff5a. |