反转链表 · C++ · 简单

it2025-03-23  8

题目:输入一个链表,反转链表后,输出新链表的表头。

设两个指针:指针pre指向null,cur指向pHead头节点 遍历链表(也就是cur不为空时),先用一个临时的指针变量temp指向cur的next,然后将cur的next指向pre, pre和cur都向前走一位,走到最后,cur指向null,pre指向最后一个节点(这时也就是链表反转后的头节点)。

下图为开始和结束时的情况:

/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { ListNode * pre = NULL;//指针pre指向NULL,cur指向pHead头节点 ListNode * cur = pHead; while(cur!=NULL) { //遍历链表 //将链表的指针反转 ListNode *temp=cur->next; cur->next=pre; pre=cur;//pre和cur向前进一位 cur=temp; } return pre; } };

最新回复(0)