思路1:
注意链表头结点和n3为空的情况应排除。
使用n1,n2,n3;
使链表的指向一次改变。
n3的目的是为了记录结点位置。
代码:
// struct ListNode* reverseList(struct ListNode* head) {
// if(head==NULL) return NULL;
// struct ListNode* n1=NULL,*n2=head,*n3=n2->next;
// while(n2){
// n2->next=n1;
// n1=n2;
// n2=n3;
// if(n3){
// n3=n3->next;
// }
// }
// return n1;
// }
思路2:
重新定义一个头结点newhead,通过cur将节点依次取出后头插,next结点用于记录。
// struct ListNode* reverseList(struct ListNode* head) {
// struct ListNode* newHead=NULL;
// struct ListNode*cur=head;
// while(cur){
// struct ListNode* next=cur->next;
// cur->next=newHead;
// newHead=cur;
// cur=next;
// //next=next->next;
// }
// return newHead;
// }