链表结构:
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;
}
网友评论