一、函数接口
1、三指针法
接口的根据自己的需要设立,可以不返回,可以返回。
void CSList(SListNode** phead)
2、头插法
struct SListNode* reverseList(struct SListNode* phead)
二、图解思路
1、三指针法
其解题的核心是三个指针之间的相互赋值转换
2、头插法
头插法:代码的实现虽然和三指针法的大同小异,但是解题思路是完全不同的,也更加的好理解,所以要优一些
三、代码实现
1、三指针法
//三指针法 void CSList(SListNode** phead) { if (*phead == NULL) { return; } else if ((*phead)->Next == NULL) { return; } SListNode* n1 = *phead;//记录当前位置 SListNode* n2 = (*phead)->Next;//记录当前后一个地址 SListNode* n3 = n2->Next;//记录当前后两个地址 n1->Next = NULL; while (n2) { n2->Next = n1; n1 = n2; n2 = n3; if (n3 != NULL) { n3 = n2->Next; } } *phead = n1; }
2、头插法
//头插法 struct SListNode* reverseList(struct SListNode* phead) { if (phead == NULL) { return NULL; } struct SListNode* newhead = NULL; struct SListNode* cur = phead; struct SListNode* next = cur->Next; while (cur) { //头插 cur->Next = newhead; newhead = cur; //迭代 cur = next; if (next != NULL) { next = next->Next; } } return newhead; }
本文转载自: https://blog.csdn.net/weixin_63246064/article/details/122792215
版权归原作者 绅士·永 所有, 如有侵权,请联系我们删除。
版权归原作者 绅士·永 所有, 如有侵权,请联系我们删除。