方法一:三指针反转法
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* ret = NULL;
struct ListNode* tmp;
while(head)
{
tmp = head;
head = head->next;
tmp->next = ret;
ret = tmp;
}
return ret;
}
方法二:创建新链表头插法
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* newhead = NULL;
struct ListNode* cur = head;
while(cur)
{
head = cur;
cur = cur->next;
head -> next = newhead;
newhead = head;
}
return head;
}