Warum behält die doppelt verkettete Liste in sys / queue.h die Adresse des vorherigen nächsten Elements?

8

Ich studiere sys/queue.h von FreeBSD und habe eine Frage:

In sys/queue.h ist LIST_ENTRY wie folgt definiert:

%Vor%

Warum behält die Adresse des vorherigen nächsten Elements ( struct type **le_prev ) und nicht einfach vorhergehende Elemente wie struct type *le_prev ?

    
Yanzhe Chen 08.05.2013, 12:23
quelle

2 Antworten

8

Wenn Sie die Datei queue.h von Anfang an gelesen hätten, könnten Sie das tun habe folgenden Kommentar:

%Vor%

so Liste, die O (1) Insertion und Deletion bietet, aber nur Vorwärtsdurchlauf. Um dies zu erreichen, brauchen Sie nur die Verweis auf den zuvor nächsten Zeiger, der genau das ist implementiert.

    
Dayal rai 08.05.2013, 12:47
quelle
0

Lass mich versuchen zu erklären. Tatsächlich bietet die **le_prev* die Möglichkeit, von sys / queue.h zu insert_before definiert zu werden, was die forward-list nicht kann. Verglichen mit insert_before kann insert_after sowohl in der Weiterleitungsliste als auch in der Liste gut implementiert werden. Die Liste ist also funktionaler.

%Vor%     
Ding 10.08.2017 14:48
quelle