使用std::list创建循环链表

Create circular linked list using std::list?

本文关键字:循环链表 创建 list 使用 std      更新时间:2023-10-16

所以,我一直想知道是否有一种方法可以在c++中用std::list创建循环链表。我似乎想不出让最后一个元素指向第一个元素的方法。有什么想法吗?

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

您不能递减std::list::begin((返回的迭代器。一般来说,您不能递减std::…::返回的任何迭代器begin((。

增加std::list::back((返回的迭代器会产生一个迭代器==std::list::end(((std::…::back(((通常也是如此(。


如果您很好奇,VisualStudio模板在内部使用一个伪节点作为循环双链表的一部分来实现std::list。dummy.next指向第一个,dummy.prev指向最后一个,first.prev==last.next==指向伪节点的指针,但这不允许您将其视为传统的循环双链表。

不,没有。

std::list不允许您自己控制链接。该列表为您控制链接。您无法自定义它们。

请注意,如果可以自定义列表中的链接,则列表中的函数可能无法正常工作。例如,如果你在一个循环列表上迭代,你永远不会完成!