反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
**思路:**考研复习时经常写的数据结构题。(以前写的是带有空的头节点)
先把头节点独立出来,再把后续节点依次插入头节点的前面同时更新头节点。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
if(head == NULL){
return head;
}
struct ListNode* tmp_head = head;
struct ListNode* p = head->next;
tmp_head->next = NULL;
while(p != NULL){
struct ListNode* q = p->next;
p->next = tmp_head;
tmp_head = p;
p = q;
}
return tmp_head;
}