给定一个单链表,把所有的奇数节点和偶数节点分别排在一起
时间: 2024-06-12 08:09:21 浏览: 196
建立一个单链表
可以通过遍历单链表,将奇数节点和偶数节点分别提取出来,然后再重新连接起来。具体实现步骤如下:
1. 初始化两个指针:奇数头指针 odd_head 和偶数头指针 even_head,分别指向奇数节点和偶数节点的头部。
2. 遍历整个链表,使用两个临时指针 odd 和 even 来分别指向当前奇数节点和偶数节点。
3. 在遍历过程中,每次迭代将奇数节点连接到奇数链表的尾部,并更新 odd 指针为下一个奇数节点。
4. 同样地,将偶数节点连接到偶数链表的尾部,并更新 even 指针为下一个偶数节点。
5. 最后,将奇数链表的尾部连接到偶数链表的头部,形成最终的链表。
以下是一个示例的实现代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def oddEvenList(head):
if not head or not head.next:
return head
odd_head = head
even_head = head.next
odd = odd_head
even = even_head
while even and even.next:
odd.next = even.next
odd = odd.next
even.next = odd.next
even = even.next
odd.next = even_head
return odd_head
```
阅读全文