【剑指offer】反转链表
题目链接:反转链表
题意: 输入一个链表,反转链表后,输出新链表的表头。
题解:用三个指针,分别指向当前结点,它的前一个结点和后一个结点。
在遍历过程中,将当前结点的尾结点和前一个结点替换。
代码:
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution { 10 public: 11 ListNode* ReverseList(ListNode* pHead) { 12 ListNode* rev = NULL;//反转链表节点 13 ListNode* node = pHead; 14 ListNode* pre = NULL; 15 while(node != NULL){ 16 ListNode *next = node->next; 17 if(next == NULL) rev = node; 18 node->next = pre; 19 pre = node; 20 node = next; 21 } 22 return rev; 23 } 24 };