Leetcode 初级算法:链表3.反转链表

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

解题思路:利用双指针头插法来进行翻转,代码如下:

```cpp
/**
 * 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* newlist=NULL;//创建一个空表
        ListNode* begin=head;//创建一个指向head的头指针
        while(begin!=NULL){
            ListNode* t=begin->next;//用来储存begin的下一个节点
            begin->next=newlist;//将begin指向newlist
            newlist=begin;//newlist后移动到begin的位置
            begin=t;//begin向后移动
        }
        return newlist;
    }
};
```

发布了35 篇原创文章 · 获赞 27 · 访问量 500

猜你喜欢

转载自blog.csdn.net/weixin_45221477/article/details/104777083