链表操作中的段错误

发布于 2024-12-08 10:13:36 字数 407 浏览 0 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夕色琉璃 2024-12-15 10:13:37

在第一次迭代

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)时,请使用标准的“列表添加”功能您的新列表附加一个新节点。

On the first iteration of

for (int count=0;count<1;count++)
    newList.head=newList.head->next;

...newList.head is NULL...so using newList.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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文