/* struct ListNode  { int val; struct ListNode *下; ListNode (int x),: 瓦尔(x),下一个(NULL), { } };*/class Solution  { 公众: ,,,ListNode *, ReverseList (ListNode *, pHead), ,,,{ ,,,,,,,//利用栈的后进先出的特点,最后进的最先出 stack
class Solution { 公众: ,,,ListNode *, ReverseList (ListNode *, pHead), ,,,{ ,,,,,,,如果(pHead==NULL) ,,,,,,,{ ,,,,,,,,,,,return 零; ,,,,,,,} ListNode * newHead=零; ,,,,,,,ListNode * cur=pHead; ,,,,,,,ListNode * tmp=零; ,,,,,,,,(坏蛋!=NULL) ,,,,,,,{ ,,,,,,,,,,,tmp=坏蛋; ,,,,,,,,,,,//关键点:一定要让坏蛋先往后走,再进行插入操作 ,,,,,,,,,,,//不然会让原链表找不到后面的结点,结果就会变成只有一个结点 ,,,,,,,,,,,坏蛋=cur→下; ,,,,,,,,,,,tmp→下=newHead; ,,,,,,,,,,,newHead=tmp; ,,,,,,,} ,,,,,,,return newHead; ,,,} };
/* struct ListNode  { int val; struct ListNode *下; ListNode (int x),: 瓦尔(x),下一个(NULL), { } };*/class Solution  { 公众: ,,,ListNode *, ReverseList (ListNode *, pHead), ,,,{//终止条件 ,,,,,,,如果(pHead==NULL | | pHead→下==NULL) ,,,,,,,{ ,,,,,,,,,,,return pHead; ,,,,,,,} ,,,,,,,//newHead得到对应的返回值、尾节点 ,,,,,,,ListNode * newHead=ReverseList (pHead→下一个); ,,,,,,,//然后将当先栈帧中的pHead的下进行更改 ,,,,,,,//比如说1→2→3→4→NULL ,,,,,,,//newHead→4 ,,,,,,,//pHead→3 ,,,,,,,//4→3→null ,,,,,,,//此时指向3的还有1→2→3→null pHead→下一步→下=pHead; ,,,,,,,pHead→下=零; ,,,,,,,return newHead; ,,,,,,, ,,,} };
剑指提供之面试题16:反转链表