Actualmente, he implementado una lista enlazada, así:¿Cómo usar la lista de sys/queue.h?
struct PeerNode {
struct Peer* cargo;
struct PeerNode* next;
};
... y tengo una estructura que contiene un par de estas listas enlazadas, así:
struct Torrent {
...
struct PeerNode* peer_list;
struct PeerNode* unchoked_peers;
...
}
I quisiera reemplazar esto usando las macros proporcionadas por sys/queue.h
. Tengo entendido que podía reemplazar mi código con algo como esto:
struct Torrent {
...
LIST_ENTRY(PeerNode, Peer) peer_list;
struct PeerNode* unchoked_peers;
...
}
Entonces, al mirar man queue
, creo que habría inicializar las listas haciendo algo como esto:
LIST_INIT(&peer_list);
LIST_INIT(unchoked_peers);
Sin embargo, no entiendo cómo LIST_ENTRY
factores en el uso de la lista. Desde la página man
, dice: "La macro LIST_ENTRY
declara una estructura que conecta los elementos en la lista", pero realmente no entiendo lo que esto significa.
¿Por qué querría declarar una estructura para conectar los elementos de la lista? ¿No debería cada nodo estar conectado al siguiente nodo a través de un puntero, como mi implementación de la lista vinculada inicial? ¿Cómo reemplazaría mis listas vinculadas con la implementación provista por sys/queue.h
? ¿Cómo insertaría un elemento en la lista?
Hola, estoy buscando un ejemplo de uso integral de cola basado en '' y parece el enlace de ejemplo ya no es válido ... ¿quizás tienes un enlace alternativo? –
osxUser