目前,我實現了一個單向鏈表,就像這樣:如何使用sys/queue.h中的列表?
struct PeerNode {
struct Peer* cargo;
struct PeerNode* next;
};
...我有一個包含幾個這樣的鏈表,像這樣一個結構:
struct Torrent {
...
struct PeerNode* peer_list;
struct PeerNode* unchoked_peers;
...
}
我想用sys/queue.h
提供的宏替換它。據我瞭解,我可以像這樣的東西取代我的代碼:
struct Torrent {
...
LIST_ENTRY(PeerNode, Peer) peer_list;
struct PeerNode* unchoked_peers;
...
}
然後,看着man queue
,我相信我會做這樣的事情初始化列表:
LIST_INIT(&peer_list);
LIST_INIT(unchoked_peers);
然而,我不明白LIST_ENTRY
因素如何進入列表的使用。從man
頁面,它說:「宏LIST_ENTRY
聲明瞭一個連接列表中的元素的結構,」但我不明白這意味着什麼。
爲什麼我要聲明一個結構來連接列表中的元素?不應該每個節點通過指針連接到下一個節點,就像我的初始鏈表實現?我如何用sys/queue.h
提供的實現來替換我的鏈接列表?我如何將一個元素插入到列表中?
嗨,我正在尋找基於''隊列全面的使用例子,它看起來像示例鏈接不再有效..也許你有一個替代鏈接? –
osxUser