我有一些问题需要在我的循环链接列表中添加新元素...当我尝试添加第一个...
if( empty() && pos ==1 )
{
newnode = new Node(ele);
newnode->next = newnode;
last = newnode;
}
..我发现了一个glibc:双重免费或腐败(fasttop)......你知道为什么吗?
这是因为我必须将.next指向自己没有?我应该怎么做,把我的最爱指向自己?
答案 0 :(得分:1)
这应该是你的顶级节点,考虑到它的空(),对吗?因此,您应该在此处设置LL头节点。此外,在您的代码中,您将节点的下一个节点设置为自身。你应该:
currentNode->Next = new Node();
lastNode = currentNode;
在设置头节点后执行此操作。
答案 1 :(得分:1)
使用循环链接列表的主要原因是简化。
为此,您应该始终(使用循环列表)使用标题节点。
对于一个空的循环列表,标题节点链接回自身,并且是列表的永久部分,它不携带任何数据 - 除了在某些情况下,是一个标记值。
使用标头节点,插入第一个节点与插入第二个或第三个完全相同的代码相同。
所以,试一试。
干杯&第h。,