1、问题描述
翻转一个链表,给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
2、实现思路
将后面的元素依次前移,head后移与最后的元素交换位置,再成为前移元素的下一个。
3、代码
/**
* Definition of ListNode
*
* class ListNode {
* public:
* int val;
* ListNode *next;
*
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
ListNode *reverse(ListNode *head) {
ListNode *last = NULL;
while (head != NULL) {
ListNode *a= head->next;
head->next =last;
last = head;
head = a;
}
return last;
}
};
4、感想
从最后一个元素依次前移,head每次后移,与最后一个元素交换位置,再成为此前移元素的后一个。
本文介绍了一种链表翻转算法的实现思路及代码。通过将链表中的节点依次前移,并与最后一个元素交换位置,最终实现链表的翻转。
1198

被折叠的 条评论
为什么被折叠?



