数据结构C语言版通过遍历一趟,将单链表 L 中所有结点的链接方向逆转。要求仍利用 原表的存储空间。将对应的函数命名为 ListReverse_L()
时间: 2024-10-19 18:13:27 浏览: 31
在C语言中,要实现`ListReverse_L()`函数来逆转单链表的链接方向,可以使用迭代的方式。由于链表的特点,我们不需要额外的空间,只需要改变每个节点的`next`指向即可。以下是`ListReverse_L()`的基本步骤:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
void ListReverse_L(Node** head) {
if (*head == NULL) {
return; // 空链表直接返回
}
Node* prev = NULL;
Node* current = *head;
Node* next_temp = NULL;
while (current != NULL) {
// 保存当前节点的下一个节点
next_temp = current->next;
// 改变当前节点的next指向
current->next = prev;
// 更新prev和current指针
prev = current;
current = next_temp;
}
// 把新的头节点设置为原链表的最后一个节点
*head = prev;
}
```
这段代码遍历一次链表,每次迭代都将当前节点的`next`指向前一个节点,直到遍历完整个链表。最后,将`head`指向新链表的第一个节点(即原链表的最后一个节点)。
阅读全文