剑指提供之面试题16:反转链表

  

/*   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:反转链表