假设链表类和链表节点分别为List和ListNode,以整数元素链表为例
class List
{
public:
struct ListNode
{
int data;
ListNode* next;
};
List();
void Reverse();
private:
ListNode* head;
};
这里的head为一个空节点,代表链表头,不储存数据,next指向第一个链表元素。反转链表的一种实现:
void List::Reverse()
{
ListNode* cur = head->next;
head->next = nullptr;
while (cur)
{
ListNode* curNext = cur->next;
cur->next = head->next;
head->next = cur;
cur = curNext;
}
}
步骤:
1、将head的next保存到指针cur后设置为nullptr,类似于一个空的链表
2、从cur开始遍历原链表,依次插入head后面,参照while循环中的代码