Ich versuche, das List-Dienstprogramm zu verwenden, das im Linux-Kernel empfohlen wird. Von der Einführung in https://isis.poly.edu/kulesh/stuff/src/klist/ eine der Funktion des list_head ist, dass das Element zu verschiedenen Listen gehören kann.Linux Kernel list_head Speicherauslastung
Nun, wenn ich eine Liste aller Mitarbeiter und eine Liste der alten Mitarbeiter nur wollen, ich glaube, ich habe die folgenden Daten und Struktur zu definieren:
struct list_head all_staff;
struct list_head old_staff;
struct staff {
int age;
struct list_head list; // for all the staff;
struct list_head old;
};
Auf der anderen Seite, die normalen Listenimplementierung kann wie folgt aussehen:
struct staff {
int age;
};
struct node {
struct node *prev;
struct node *next;
void *element;
};
Was ist der Vorteil von list_head im Vergleich zur normalen Listenimplementierung? Ich fühle, obwohl die list_head nur 2 Punkte enthält, entfernt den Punkt auf das Element, und so spart es Speicher, aber in diesem Fall muss ich eine weitere list_head in der Personalstruktur hinzufügen, wenn es nur 1 alte Mitarbeiter, dann wird es verschwenden viel Speicher.
Wenn das Personal zu vielen verschiedenen Gruppen gehört, bedeutet das, dass ich viele list_head in der Personalstruktur hinzufügen muss?
Danke.
Je nachdem, wie Sie es verwenden möchten, kann es sinnvoll sein, die Liste zu durchlaufen anstatt mehrere Listen zu verwalten. – 0andriy
Link ist tot. Bitte repariere es. – 0andriy