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