原题:反转链表
将一个链表反转,比如原链表为1-2-3-4,反转后为4-3-2-1,输出头指针
解答:
C++版本
ListNode* swapPairs(ListNode* head) {
ListNode * dummy = new ListNode(0);
dummy->next = head;
ListNode * d_next = head;
if (head == NULL) return NULL;
while (head->next != NULL)
{
dummy->next = head->next;
head->next = head->next->next;
dummy ->next->next = d_next;
d_next = dummy ->next;
}
return dummy->next;
}
思路:
此方案采用头插入的方式进行,是最理想的方式。关键点是设置一个虚指针指向头结点。
链表问题一般较难分析,可以采用画图的方式分析,快捷又高效。