剣はオファー24を指します。逆リンクリスト(C ++)の反復

関数を定義し、リンクリストのヘッドノードを入力し、リンクリストを反転し、反転したリンクリストのヘッドノードを出力します。

例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

制限:

0 <=ノード数<= 5000

注:この質問は、メインサイトの質問206と同じです:https://leetcode-cn.com/problems/reverse-linked-list/

問題解決のアイデア:

参照:https://blog.csdn.net/qq_30457077/article/details/114111054

/**
 * 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 = nullptr;//前一个节点
        ListNode* curr = head;//当前节点
        while (curr) {
    
    
            ListNode* next = curr->next;//获取当前节点的下一个节点
            curr->next = prev;//当前节点指向前一个节点:反转方向
            prev = curr;//当前节点赋值给前一个节点
            curr = next;//下一个节点赋值给当前节点
        }
        return prev;//此时为新的头节点

    }
};

おすすめ

転載: blog.csdn.net/qq_30457077/article/details/114704730
おすすめ