定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的各个值。
时间: 2023-05-30 09:05:24 浏览: 126
以下是Python的实现:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def reverseList(head: ListNode) -> ListNode:
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
def printList(head: ListNode) -> None:
while head:
print(head.val, end=' ')
head = head.next
print()
# 测试
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
printList(node1) # 输出 1 2 3 4 5
new_head = reverseList(node1)
printList(new_head) # 输出 5 4 3 2 1
```
首先定义了一个链表节点类 `ListNode`,包含一个值 `val` 和一个指向下一个节点的指针 `next`。
然后定义了一个 `reverseList` 函数,该函数输入一个链表的头节点,返回反转后的链表头节点。该函数使用三个变量 `prev`、`curr` 和 `next_node` 来进行链表反转操作,具体实现请参考注释。
最后定义了一个 `printList` 函数,该函数输入链表头节点,按顺序输出链表中的每个节点的值。
在测试部分,创建了一个链表节点序列 `node1`,并将其初始化为 1-2-3-4-5 的链表。先调用 `printList` 函数输出原链表中的节点值,然后调用 `reverseList` 函数进行链表反转,再次调用 `printList` 函数输出反转后的链表中的节点值。
阅读全文