反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解题思路:
从链表头部开始,设立三个指针指向三个相邻元素,不断地改变之间的链接方向,直到遍历完整个链表
实现代码:
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* node = head;
struct ListNode* cur = head;
struct ListNode* pre = NULL;
while(cur) {
cur = cur->next;
node->next = pre;
pre = node;
node = cur;
}
return pre;
}
运行结果: