1、题目描述
反转一个单链表。链表节点结构如下:
1 struct ListNode { 2 int val; 3 ListNode* next; 4 };
2、问题分析
特殊情况是输入的头结点是一个空的,或者只有一个头结点
3、代码实现
1 ListNode* reverseList( ListNode* head ) 2 { 3 if( head == NULL || head->next == NULL) 4 return head; 5 6 ListNode* pre = NULL; 7 ListNode* next = NULL; 8 9 while( head != NULL) 10 { 11 next = head->next; // 保存后继节点 12 head->next = pre; // head 指向前驱节点 13 pre = head; // 前驱节点更新 14 head = next; //当前节点更新 15 } 16 return pre; 17 18 }