簡體   English   中英

使用 std::list 創建循環鏈表?

[英]Create circular linked list using std::list?

所以,我一直想知道是否有一種方法可以在 c++ 中使用 std::list 創建循環鏈表 我似乎無法找到讓最后一個元素指向第一個元素的方法。 任何想法有人怎么能做到這一點?

std::list 接口不支持循環列表,其中 first.prev 是指向 last 的指針,last.next 是指向 first 的指針。

您不能遞減 std::list::begin() 返回的迭代器。 更一般地說,您不能減少 std:: ... ::begin() 返回的任何迭代器。

遞增 std::list::back() 返回的迭代器會導致迭代器 == std::list::end() (通常對於 std:: ... :: back() 也是如此)。


如果您很好奇,Visual Studio 模板在內部使用虛擬節點作為循環雙向鏈表的一部分實現 std::list。 dummy.next 指向第一個,dummy.prev 指向最后一個,first.prev == last.next == 指向虛擬節點的指針,但這不允許您將其視為傳統的循環雙向鏈表。

不,那里沒有。

std::list不允許您自己控制鏈接。 該列表為您控制鏈接。 您無法自定義它們。

請注意,如果您可以自定義列表中的鏈接,則列表中的功能可能無法正常工作。 例如,如果你遍歷一個循環列表,你永遠不會完成!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM