编写一个函数:将单链表中数据元素逆置。
时间: 2023-06-02 15:06:26 浏览: 123
好的,这个问题可以回答。以下是一个简单的Python函数实现单链表反转:
```python
def reverse_linked_list(head):
if not head or not head.next:
return head
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
这个函数接收链表的头节点 `head` 作为参数,返回反转后的链表的头节点。函数内部使用了三个指针 `prev`、`curr` 和 `next_node`。`prev` 用于指向当前节点的前一个节点,`curr` 用于指向当前节点,`next_node` 用于暂存当前节点的下一个节点。在遍历链表的过程中,将当前节点的 `next` 指针指向前一个节点,然后移动三个指针,继续遍历链表,直到当前节点为 `None` 为止。最后,将反转后的链表的头节点返回即可。
希望这个函数能够帮助到你。请注意,这个函数只是一个简单的实现,有改进的空间。
相关问题
编写一个c语言函数:将单链表中数据元素逆置。
好的,以下是将单链表中数据元素逆置的 C 语言函数代码:
```
void reverseList(ListNode* head) {
ListNode *prev = NULL, *curr = head, *next = NULL;
while(curr) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head = prev;
}
```
其中,ListNode 表示单链表节点的数据结构,它包括一个 int 类型的数据成员 value 和一个指向下一个节点的指针 next:
```
typedef struct ListNode {
int value;
struct ListNode *next;
} ListNode;
```
这个函数的实现思路是遍历单链表,用三个指针 prev、curr 和 next 分别表示当前节点的前一个节点、当前节点和下一个节点,然后依次将相邻两个节点的指针关系反转,即将 curr->next 指向 prev,然后让 prev、curr、next 指针依次向后移动。最后将头节点指向新的尾节点,也就是 prev。
编写一个函数:将单链表B中数据元素逆置。
好的,我可以为您编写这个函数。以下是一个 Python 语言版本的实现例子:
```python
def reverseList(head):
if not head or not head.next: # 链表为空或只有一个节点,直接返回
return head
preNode = None
curNode = head
while curNode:
nextNode = curNode.next # 保存后继节点
curNode.next = preNode # 当前节点指向前驱节点
preNode = curNode
curNode = nextNode
return preNode
```
使用这个函数将单向链表逆置:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
head = ListNode(1)
p1 = ListNode(2)
p2 = ListNode(3)
p3 = ListNode(4)
head.next = p1
p1.next = p2
p2.next = p3
# 原链表输出:1 -> 2 -> 3 -> 4
cur = head
while cur:
print(cur.val)
cur = cur.next
print('逆置后:')
newHead = reverseList(head)
# 逆置后的链表输出:4 -> 3 -> 2 -> 1
cur = newHead
while cur:
print(cur.val)
cur = cur.next
```
输出结果如下:
```
1
2
3
4
逆置后:
4
3
2
1
```
阅读全文