C编程将链表一分为二



我在C编程中将链表一分为二时遇到了一些问题。这是代码:

typedef struct _listnode {
    int item;
    struct _listnode *next;
} ListNode;         // You should not change the definition of ListNode
typedef struct _linkedlist {
    int size;
    ListNode *head;
} LinkedList;   
}

您没有这么说,但我认为当您将列表一分为二时,您不想保留原始列表。如果是这样的话,你只需要找到在哪里切断链接,例如:

head1 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL     head2 -> NULL
head1 -> 1 -> 2 -> 3 -> NULL     head2 -> 4 -> 5 -> 6 -> NULL

在这里,您必须在示例节点3中标识第一个loist的新尾部tail。将新列表的标题设置为tail->next,将tail->next设置为NULL,然后调整列表中的计数。

代码中的奇数和偶数不需要不同的分支。如果列表中有奇数个节点,则一个列表中的一个节点将比另一个多:left = total / 2将使右侧列表更长,left = (total + 1) / 2将使左侧列表更长。选一个就完事了。

相关内容

  • 没有找到相关文章

最新更新