链表c语言代码 反转函数,单链表反转C语言实现
时间: 2023-08-15 12:38:37 浏览: 168
好的,下面是单链表反转的C语言实现代码:
```c
#include<stdio.h>
#include<stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* prev = NULL;
struct ListNode* curr = head;
while (curr != NULL) {
struct ListNode* nextTemp = curr->next;
curr->next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
int main() {
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->val = 1;
head->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->val = 2;
head->next->next = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next->next->val = 3;
head->next->next->next = NULL;
struct ListNode* new_head = reverseList(head);
while (new_head != NULL) {
printf("%d ", new_head->val);
new_head = new_head->next;
}
return 0;
}
```
这段代码中,我们首先定义了一个 `ListNode` 结构体,表示单链表的节点。其中,`val` 表示节点的值,`next` 表示指向下一个节点的指针。接着,我们定义了 `reverseList` 函数,用于反转单链表。在函数中,我们使用了三个指针变量 `prev`、`curr` 和 `nextTemp`,分别表示当前节点的前一个节点、当前节点和当前节点的后一个节点。在循环中,我们不断地将当前节点的 `next` 指针指向前一个节点,然后更新三个指针变量的值,直到当前节点为 `NULL`。最后,我们返回反转后的单链表的头指针 `prev`。在 `main` 函数中,我们构造一个简单的单链表,并且调用 `reverseList` 函数进行反转,最后输出反转后的单链表的节点值。
阅读全文