Grundsätzlich versuche ich im folgenden Code einige Namen und einige Altersstufen in eine Liste einzufügen und auszudrucken. Mein Programm druckt jedoch nur den Nachnamen und das Alter der Liste. Irgendwelche Vorschläge?Druckelemente einer Liste in C
#include <stdio.h>
#include <stdlib.h>
/* these arrays are just used to give the parameters to 'insert',
to create the 'people' array
*/
#define HOW_MANY 7
char *names[HOW_MANY]= {"Simon", "Suzie", "Alfred", "Chip", "John", "Tim",
"Harriet"};
int ages[HOW_MANY]= {22, 24, 106, 6, 18, 32, 24};
typedef struct person
{
char *name;
int age;
struct person *next;
}Person;
Person *headp = NULL;
static Person* insert(Person *p, char *name, int age)
{
p = (Person*)malloc(sizeof(Person));
if (p == NULL)
abort();
p->name = name;
p->age = age;
p->next = headp;
return p;
}
int main(int argc, char **argv)
{
Person *people=headp;
for (int i = 0; i < 7; i++)
{
people = insert (people, names[i], ages[i]);
}
while (people != NULL)
{
printf ("name: %s, age: %i\n", people->name, people->age);
people= people->next;
}
return 0;
}
Es funktioniert .... aber es druckt die Elemente in umgekehrter Reihenfolge ... ie das erste Element ist das letzte ... –
Dann ändern Sie 'für (int i = 0; i <7; i ++)' zu 'für (int i = 6; i> = 0; i -)' –
@ RalucaDamarisLupeş : Wie ist das überraschend? Sie haben Ihre 'insert'-Funktion so entworfen, dass sie sich wie' prepend' anstatt als 'append' verhält. –