链表操作中的段错误
我不知道为什么我会在这里遇到这个段错误。我试图将所有其他节点放入一个新列表中。 编辑:这就是我最终得到的结果,但我仍然遇到段错误
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;
}
I dont know why im getting this segfault here. I am trying to take every other node and place it in a new list.
Edit: this is what i ended up with but i still get a segfault
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在第一次迭代
...
newList.head
是NULL
...所以使用newList.head->next
是一个坏主意。我建议您相当正常地迭代当前列表(即 current = head; while(current) ...),在循环内增加一个计数器来跟踪列表中的当前位置,每当循环计数器为偶数或 0(
counter % 2 == 0
或(counter & 1) == 0
)时,请使用标准的“列表添加”功能您的新列表附加一个新节点。On the first iteration of
...
newList.head
isNULL
...so usingnewList.head->next
is a bad idea.I'd recommend that you iterate over the current list fairly normally(i.e.
current = head; while(current) ...
), increment a counter within the loop to track the current position in the list, and whenever the loop counter is even or 0 (counter % 2 == 0
or(counter & 1) == 0
) use the standard 'list add' function on your new list to append a new node.