2011-02-12 44 views
1

我有一些概率增加一个新的elment在我圆链表...当我尝试添加的第一个...圆链表C++

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

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

    last = newnode; 
} 

..我一个glibc的检测:双倍免费或腐败(fasttop)...你知道为什么吗?

这是因为我必须指出自己的.next没有?我该怎么做才能指出我自己的缺点?

+1

双人自由意味着什么被释放。 – 2011-02-12 21:34:19

回答

1

这应该是你的顶级节点,考虑它的空(),对吧?所以,你应该在这里设置你的LL头节点。而且,在你的代码中,你正在设置节点的下一个节点。您应该:

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

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

+0

之后?节点* elem; elem newnode =新节点(ele); – Roots 2011-02-12 21:48:59

1

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

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

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

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

所以,请试试看。

干杯&心连心,