链表反转
思路:从原链表的头部一个一个取节点并插入到新链表的头部
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head) { struct ListNode* result = 0; while (head) { /*创建工作结点,保存head->next*/ struct ListNode* next = head->next; /*把当前链表的头结点插入新链表的开始位置,作为新链表头结点*/ head->next = result; result = head; /*如果有后续结点,把后续结点作为头结点,返回上一步。*/ head = next; } return result; }