I ont une structure de donnéesde tri des tableaux char *
struct record {
char cont[bufferSize];
record *next;
};
Quand j'ajouter de nouveaux enregistrements à cette structure, je veux qu'ils soient classés par ordre alphabétique. J'ai fait cette fonction, qui ajoute record au bon endroit (par ordre alphabétique) dans la liste chaînée:
record *start=NULL, *p, *x;
void recAdd(char*temp) {
p = new record;
temp[strlen(temp)] = '\0';
for (int j=0;j<bufferSize;j++) p->cont[j] = temp[j];
if (start==NULL) start=p;
else {
x=start;
int c=0;
while (recComp(x->cont,p->cont) <= 0 && x->next != NULL) {
x=x->next;
c++;
}
if (c == 0) {
p->next=start;
start=p;
}
else {
x=start;
for (int i=0;i<c;i++) x=x->next;
p->next=x->next;
x->next=p;
}
}
for (int j=0;j<bufferSize;j++) temp[j] = NULL;
};
Mais d'une certaine manière, il ne règle pas les choses. Quel est le problème avec ma fonction?
temp [strlen (temp)] = '\ 0'; - ce n'est pas nécessaire – KPexEA
@anno: ce n'est pas C non plus - c'est C++ sans bibliothèque. –
Pourquoi recAdd() modifie le contenu de 'temp'? –