反转链表
题目描述
输入一个链表,反转链表后,输出链表的所有元素。
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { if(pHead== NULL) return NULL; ListNode* oldHead=pHead; ListNode* l1=pHead; ListNode* l2=NULL; ListNode* newHead=NULL; ListNode* pre=NULL; int flag=0; while(l1) { //已经只剩下一个元素 if(l1->next == NULL) { flag=1; } while(l1->next != NULL) { pre=l1; l1=l1->next; } if(newHead == NULL) { l2=l1; newHead=l2; } else { l2->next=l1; l2=l1; } if(flag==1) { l1=NULL; } else { pre->next=NULL; l1=oldHead; } } return newHead; } };