本题思路:可以先创建三个指针n1为空 n2为head n3为n2的下一个节点 ,然后令n2指向n1,再让n2 = n1,再让n3往后走最后返回n1即可
开始创建
第一次修改,往后依次类推
最后
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
pre:用来指向反转后的节点,初始化为null;
//cur:当前节点指针(cur=head);
//迭代:在遍历链表时,将当前节点的next指针指向前一个节点(head->next=pre),由于节点没有引用其前一个节点,必须事先存储前一个节点(pre=head);在更改引用之前,还有存储后一个节点(cur=head->next),最后返回新的头引用(head=cur)。
*
* @param head ListNode类
* @return ListNode类
*/
typedef struct ListNode ListNode;
struct ListNode* ReverseList(struct ListNode* head ) {
//处理空链表
if(head ==NULL){
return head;
}
//先创建三个指针
ListNode* n1, *n2, *n3;
n1 = NULL, n2 = head, n3 = head->next;
//遍历链表,修改节点指针
ListNode* pcur = head; //这里是创建一个临时的指针来遍历链表
while(n2){
//修改n2的指向
n2->next = n1;
//修改三个指针的位置
n1 = n2;
n2 = n3;
if(n3)
n3 = n3->next;
}
return n1;
}

京公网安备 11010502036488号