将一个链表拆分为两个链表
时间: 2024-01-04 11:46:11 浏览: 181
可以按照以下步骤将一个链表拆分为两个链表:
1. 定义两个新链表的头结点,分别命名为head1和head2。
2. 遍历原链表,将原链表中的每个结点按照一定的规则插入到head1或head2中。
3. 最后,将原链表中的所有结点都插入完毕后,将head1和head2分别作为两个新链表的头结点返回即可。
以下是一个Java代码示例,用于将一个链表按照奇偶性拆分为两个链表:
```
public ListNode[] splitList(ListNode head) {
ListNode oddHead = new ListNode(0);
ListNode evenHead = new ListNode(0);
ListNode odd = oddHead;
ListNode even = evenHead;
ListNode cur = head;
int count = 1;
while (cur != null) {
if (count % 2 == 1) {
odd.next = cur;
odd = odd.next;
} else {
even.next = cur;
even = even.next;
}
cur = cur.next;
count++;
}
odd.next = null;
even.next = null;
return new ListNode[]{oddHead.next, evenHead.next};
}
```
在上面的代码中,我们定义了两个新链表的头结点oddHead和evenHead,以及两个指向当前结点的指针odd和even。在遍历原链表时,我们将链表中的奇数结点插入到odd链表中,将偶数结点插入到even链表中。最后,我们将odd链表的尾结点指向null,将even链表的尾结点也指向null,并将两个新链表的头结点作为结果返回。
阅读全文