#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode *prev = NULL, *curr = head, *next_temp;
while (curr != NULL) {
next_temp = curr->next;
curr->next = prev;
prev = curr;
curr = next_temp;
}
return prev;
}
void printList(struct ListNode* head) {
struct ListNode* curr = head;
while (curr != NULL) {
printf("%d -> ", curr->val);
curr = curr->next;
}
printf("NULL\n");
}
int main() {
struct ListNode n1 = {1, NULL};
struct ListNode n2 = {2, NULL};
struct ListNode n3 = {3, NULL};
struct ListNode n4 = {4, NULL};
n1.next = &n2;
n2.next = &n3;
n3.next = &n4;
printf("原链表: ");
printList(&n1);
struct ListNode* new_head = reverseList(&n1);
printf("逆置后链表: ");
printList(new_head);
return 0;
}