J'écris un code avec un tableau de pointeurs et de structures. code est:Boucle dans un tableau de pointeurs
struct Student_List{
int roll;
char name[20];
int mark1;
int mark2;
int mark3;
struct Student_List *next;
};
struct Student_List *Class[] = { NULL };// to generate student's list for various classes.
struct Student_List *current =NULL;
struct Student_List * check(int rollNo, int classNo)
{
struct Student_List *temp=NULL;
temp=Class[classNo];
while (temp!=NULL) {
if(temp->rollNo == rollNo)
{
//element is found
return temp;
}
temp = temp->next;
}
if(temp==NULL)
{
//element not found
return NULL;
}
//scan serially and if found return address of that node
//if no element found return NULL
}
//add elements to list pointed by Class
struct Student_List * add(char studentName, int rollNo,int classNo)
{
struct Studen_List *newNode=(struct Student_List *)malloc(sizeof(struct Student_List));
if (newNode == NULL) {
printf("malloc failed\n");
}
newNode->roll=rollNo;
strcpy(newNode->name,studentName);
newNode->mark1=0;
newNode->mark2=0;
newNode->mark3=0;
struct Student_List *temp = NULL, *previous = NULL;
temp=Class[classNo];
prev = temp;
}
if(temp==NULL)
{
Class[classNo]=newNode;
return Class[classNo];
}
while(temp!=NULL)
{
prev=temp;
temp=temp->next;
}
prev->next=newNode;
return newNode;
//add node to end of the list
}
void Delete_List(struct Student_List *temp)
{
delete []temp;
//temp = NULL;
/*while(temp!=NULL)
{
struct Student_List *del=temp;
temp=temp->next;
free(del);
}*/
}
int main();
{
int classNo,rollNo,i;
char *name;
printf("\nEnter Class No: ");
scanf("%d",&classNo);
printf("\nEnter Name: ")
gets(name);
printf("\nEnter Roll No: ");
scanf("%d",&rollNo);
current = check(rollNo,classNo);
if(current == NULL){
current = add(name,rollNo,classNo);
}
// others is the marks data fetched from file and calculations.
// this code is enough to reproduce my error.
for(int i=0;i<10;i++)
{
Delete_List(Class[i]);
}
return;
}
Problème: Quand je spécifier des valeurs et réaliser des calculs de, les résultats étaient mauvais. Au débogage, j'ai trouvé que mon adresse de départ Class[3]
est la même que Class[1]->nextRoll->nextRoll;
Je n'arrive pas à le supprimer. S'il vous plaît aidez-moi à enlever la boucle. toute aide avec la syntaxe ou les suggestions sont les bienvenues.
Le code ne compile pas, n'a même pas la "boucle" dont vous avez besoin d'aide pour supprimer. Vous voulez que nous vous aidions avec un code sans rapport avec votre problème? En voici un: 'int main() {}', celui-ci fonctionne. – DanielKO
Il sera utile de nous montrer comment vous initialisez et utilisez 'Class'. – Thanushan
Est-ce C++ ou C? Choisissez seulement un. – user694733