关于链表操作的Segfault

时间:2011-10-06 00:24:02

标签: c++ syntax linked-list

我不知道为什么我会在这里遇到这个段错误。我试图采取所有其他节点并将其放在一个新的列表中。 编辑:这是我最终得到的,但我仍然得到一个段错误

template <class T>
List<T> List<T>::mixSplit()
{
    List<T> newList;
    newList.length=0;
    for (int count=0;count<2;count++)
        newList.head=newList.head->next;
    newList.tail=tail;
    newList.head->prev=NULL;
    newList.tail->next=NULL;
    return newList;
}

1 个答案:

答案 0 :(得分:1)

的第一次迭代中
for (int count=0;count<1;count++)
    newList.head=newList.head->next;

... newList.headNULL ...所以使用newList.head->next是一个坏主意。

我建议您相当正常地迭代当前列表(即current = head; while(current) ...),在循环内递增计数器以跟踪列表中的当前位置,以及每当循环计数器为偶数或0时( counter % 2 == 0(counter & 1) == 0)使用新列表中的标准“列表添加”功能来附加新节点。