1.问题描述
定义一个函数,输入一个链表的头结点,反转该链表病输出翻转后链表的头结点。(来自《剑指offer》)
2.分析
反转链表需要注意,头指针为空或者整个链表只有一个结点时,反转后链表有没有断裂,反转后头结点是否是原来的尾结点。
3.代码
typedef struct node
{
int data;
struct node *next;
}ListNode;
ListNode* ReverseList(ListNode* head)
{
ListNode *ReverseHead = NULL;
ListNode *node = head;
ListNode *pre = NULL;
while (node != NULL)
{
ListNode *next = node->next;
if (next == NULL)
{
ReverseHead = node;
}
node->next = pre;
pre = node;
node = next;
}
return ReverseHead;
}