本文参考下面资料:
https://www.cnblogs.com/byrhuangqiang/p/4311336.html
采用了其中第一种方法
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
struct ListNode *prev;
struct ListNode *pCur;
struct ListNode *dummy = malloc(sizeof(struct ListNode));
if(head == NULL)
{
return NULL;
}
dummy->next = head;
prev = dummy->next;
pCur = prev->next;
while(pCur != NULL)
{
prev->next = pCur->next;
pCur->next = dummy->next;
dummy->next = pCur;
pCur = prev->next;
}
return dummy->next;
}
注意:
- struct ListNode *dummy = malloc(sizeof(struct ListNode));
如果不这么写就会报dummy零指针错误,刚开始写的是
struct ListNode *dummy;
就会报零指针错误,无法通过编译 - 在leetcode测试用例里认为头指针也是存储数据的??(个人认为是这样),不然的话不用设置dummy指针,如果head为不存储数据的指针的话,直接用head指针就可以代替dummy指针了