leetcode 206. 反转链表

2020-10-12  本文已影响0人  Source_Chang

leetcode

链表结构:

typedef struct Node {
public:
    int value;
    struct Node *next;
} *NodePtr;

递归:
C++:

NodePtr ReverseNodeList::recursiveReverseNode(NodePtr head) {
    
    if ( !head || !(head -> next) ) {
        
        return head;
    }
    
    NodePtr newHead = recursiveReverseNode( head -> next );
    if ( !newHead ) {
        
        return head;
    }
    
    head -> next -> next = head;
    head -> next = NULL;
    
    return newHead;
}

非递归:
C++:

NodePtr ReverseNodeList::nonRecursiveReverseNode(NodePtr head) {
    
    NodePtr newHead = NULL;
    while ( head ) {
        
        NodePtr next = head -> next;
        head -> next = newHead;
        newHead = head;
        head = next;
    }

    return newHead;
}
上一篇 下一篇

猜你喜欢

热点阅读