我不知道为什么我会在这里遇到这个段错误。我试图采取所有其他节点并将其放在一个新的列表中。 编辑:这是我最终得到的,但我仍然得到一个段错误
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;
}
答案 0 :(得分:1)
在
的第一次迭代中for (int count=0;count<1;count++)
newList.head=newList.head->next;
... newList.head
为NULL
...所以使用newList.head->next
是一个坏主意。
我建议您相当正常地迭代当前列表(即current = head; while(current) ...
),在循环内递增计数器以跟踪列表中的当前位置,以及每当循环计数器为偶数或0时( counter % 2 == 0
或(counter & 1) == 0
)使用新列表中的标准“列表添加”功能来附加新节点。