Hiện nay, tôi đã thực hiện một danh sách đơn lẻ liên kết, như vậy:Cách sử dụng danh sách từ sys/queue.h?
struct PeerNode {
struct Peer* cargo;
struct PeerNode* next;
};
... và tôi có một cấu trúc có chứa một vài các danh sách liên kết, như vậy:
struct Torrent {
...
struct PeerNode* peer_list;
struct PeerNode* unchoked_peers;
...
}
tôi muốn thay thế điều này bằng cách sử dụng các macro được cung cấp bởi sys/queue.h
. Tôi tập hợp mà tôi có thể thay thế mã của tôi với một cái gì đó như thế này:
struct Torrent {
...
LIST_ENTRY(PeerNode, Peer) peer_list;
struct PeerNode* unchoked_peers;
...
}
Sau đó, từ nhìn vào man queue
, tôi tin rằng tôi sẽ khởi tạo danh sách bằng cách làm một cái gì đó như thế này:
LIST_INIT(&peer_list);
LIST_INIT(unchoked_peers);
Tuy nhiên, tôi không hiểu làm thế nào LIST_ENTRY
yếu tố vào việc sử dụng danh sách. Từ trang man
, nó nói: "Macro LIST_ENTRY
tuyên bố một cấu trúc kết nối các phần tử trong danh sách", nhưng tôi thực sự không hiểu ý nghĩa của nó.
Tại sao tôi muốn khai báo cấu trúc để kết nối các yếu tố trong danh sách? Không nên mỗi nút được kết nối với nút tiếp theo thông qua một con trỏ, như triển khai danh sách liên kết ban đầu của tôi? Làm cách nào để thay thế danh sách được liên kết của tôi bằng cách triển khai được cung cấp bởi sys/queue.h
? Làm cách nào để chèn một phần tử vào danh sách?
Hi, tôi đang tìm một ví dụ sử dụng toàn diện cho hàng đợi dựa trên ' 'và nó có vẻ như liên kết ví dụ không còn hợp lệ .. có lẽ bạn có một Liên kết thay thế không? –
osxUser