Witam,
Tworzę funkcję, która ma za zadanie dodawać do listy opartej na strukturach pozycje sortując je jednocześnie (tzn. wybierając odpowiednie miejsce dla dodawanej pozycji).
Struktura wygląda tak:
struct node {
double key;
char *val;
struct node *next;
};
A sama funkcja tak:
struct node *insert(struct node *p, double number, char *word) {
struct node *ptr = (struct node *)malloc(sizeof(struct node));
if (!p) {
ptr->key = number;
ptr->val = (char *)malloc(sizeof(char)*(strlen(word)+1));
strcpy(ptr->val, word);
ptr->next = NULL;
return p;
}
else {
if (p->key > number) {
insert(p->next, number, word);
}
else {
ptr->key = number;
ptr->val = (char *)malloc(sizeof(char)*(strlen(word)+1));
strcpy(ptr->val, word);
ptr->next = p;
return ptr;
}
}
}
Użyłem pojedynczego wskaźnika, bo z podwójnym miałbym potem problem z wydrukowaniem wszystkich wartości. Funkcja jednak nie działa - przy wyświetlaniu (jako parametr podaje wskaźnik do pierwszego elementu) na ekranie nic się nie pojawia.
EDIT: Już widzę, że jest to głupota. Przy podwójnym wskaźniku z kolei wyświetlała się jedynie ostatnia pozycja na liście. Jak pogodzić obie sprawy?