【链表题目】01.反转链表

【链表题目】01.反转链表
给出单链表的头结点head,请反转链表并返回反转后的链表OJ链接https://leetcode.cn/problems/reverse-linked-list对于本题有多种思路有一个非常好用的算法思想!思路一创建新链表遍历原链表每个结点头插到新链表中(比较常规主要介绍下面的方法)思路二创建三个指针三个指针分别为n1,n2,n3,顺序排放初始时n1指向空(NULL)n2指向头结点n3指向头结点的下一个结点。只要n2指针不为空就让n2的next指针指向n1,接下来开始赋值n1走到n2,n2走到n3,n3走到下一个结点只要n2不为空就继续上述步骤n2为空则跳出循环此时就完成了反转。首先看图表示用代码来实现上述思路,写起来非常简单我们只需要创建三个指针修改指针的指向再加上赋值就OKtypedefstructListNodeListNode;structListNode*reverseList(structListNode*head){if(headNULL){returnhead;}//创建三个指针ListNode*n1,*n2,*n3;n1NULL,n2head,n3n2-next;while(n2){n2-nextn1;n1n2;n2n3;if(n3)n3n3-next;}returnn1;}