定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
class Solution
{
public:
ListNode* reverseList(ListNode* head)
{
ListNode* previous= NULL;
ListNode* temp = NULL;
while (head)
{
temp = head->next;
head->next = previous;
previous= head;
head = temp;
}
return previous;
}
};
思路:传入函数的head指针用来表示当前正在进行逆序排列的结点位置。定义两个指针,一个指针用来保存给head->next赋值之前的地址,一个指针用来记录head前一个结点的位置。每次循环前判断head是否为空,不为空时,先记录即将逆序排列结点的下一个结点的位置,用temp保存。然后再将即将进行逆序排列结点的next赋值为前一个结点的地址,最后将head和记录head前一个结点位置的指针同时向后移动。直到head为空,表示逆序完成