Reverse a singly linked list.
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head) { if(head == NULL || head->next == NULL) { return head; } struct ListNode* p = head; struct ListNode* newHead = NULL; struct ListNode* insert = NULL; while(p != NULL) { struct ListNode* insert = (struct ListNode *)malloc(sizeof(struct ListNode)); insert->val = p->val; insert->next = newHead; newHead = insert; p = p->next; } return newHead; }
注:在代码中用head赋值的变量,除了控制循环一般不要改变它的值,因为会改变head与指向head的变量的值。