循环链接列表C ++

时间:2011-02-12 21:19:01

标签: c++ linked-list

我有一些问题需要在我的循环链接列表中添加新元素...当我尝试添加第一个...

if( empty() && pos ==1 )
{

    newnode = new Node(ele);
    newnode->next = newnode;

    last = newnode;
}

..我发现了一个glibc:双重免费或腐败(fasttop)......你知道为什么吗?

这是因为我必须将.next指向自己没有?我应该怎么做,把我的最爱指向自己?

2 个答案:

答案 0 :(得分:1)

这应该是你的顶级节点,考虑到它的空(),对吗?因此,您应该在此处设置LL头节点。此外,在您的代码中,您将节点的下一个节点设置为自身。你应该:

currentNode->Next = new Node();
lastNode = currentNode;

在设置头节点后执行此操作。

答案 1 :(得分:1)

使用循环链接列表的主要原因是简化

为此,您应该始终(使用循环列表)使用标题节点

对于一个空的循环列表,标题节点链接回自身,并且是列表的永久部分,它不携带任何数据 - 除了在某些情况下,是一个标记值。

使用标头节点,插入第一个节点与插入第二个或第三个完全相同的代码相同。

所以,试一试。

干杯&第h。,