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 :
Et ici mon code pour supprimer un élément dans la liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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.... Et cela me plante mon programme avec un message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;} }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Unhandled exception at 0x0041207b in LinkedList.exe: 0xC0000005: Access violation reading location 0xfeeeff5a.
Partager