赞
踩
1.三指针法:两个指针指向局部反转的两个节点操作反转,另外一个指针tmp保存其后链表的地址,反转前先用tmp保存地址,反转后指针2赋值给指针1,指针tmp赋值给指针2。
2.这里实际操作的是指针1和指针2,跳出while的条件用其中后面的那一个。
3.这里要注意原来的第一个节点反转后要指向NULL,只要将NULL也视为一个节点,指针1的初始值赋值为NULL即可统一操作。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head){ struct ListNode *p = NULL; struct ListNode *q = head; while(q) { struct ListNode *tmp = q->next; q->next = p; p = q; q = tmp; } return p; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。