leetcode[206]Reverse Linked List

问题:反转单链表

输入:ListNode* head

输出:ListNode* head

思路:没有思路,只好看solution,学习一下。链表真的头大,指来指去。

做链表类题目的关键是画图,将链表指针指向的内存的变化用图表示出来。

设置虚拟头节点。头节点(head)常要特殊处理,因为head节点没有前一个节点。通过在head节点前加一个虚拟节点,便可用正常的方法。

每次循环,将箭头指向左边的节点,且改变pre和cur。 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* prev=NULL;
        ListNode* curr=head;
        while(curr!=NULL)
        {
            ListNode* nextTemp=curr->next;
            curr->next=prev;
            prev=curr;
            curr=nextTemp;
        }
        return prev;
    }
};
发布了56 篇原创文章 · 获赞 10 · 访问量 6825

猜你喜欢

转载自blog.csdn.net/qq_22148493/article/details/88257546