一张图解释链表翻转

来源:互联网 发布:python win32service 编辑:程序博客网 时间:2024/04/29 10:06

附上递归的算法:

LinkList ReverseLinkList( pNode PreNode, pNode CurrentNode ) {   if(!CurrentNode) /*如果当前节点指针为空,则返回NULL,此种情况只有在*/   return NULL; /*链表头指针为空时才可能执行到*/ if(!CurrentNode->next) /*如果下一节点指针为空,则将当前节点next指针指向上一节点,并*/ { /*返回当前节点指针,次种情况只有在当前节点为尾节点时才能执行到*/   CurrentNode->next=PreNode;   return CurrentNode; } else /*其他节点的情况,先调用递归函数反转后续节点,再反转当前节点*/ { /*并将递归函数返回来的尾节点指针向上层函数返回*/   LinkList FirstNode;   FirstNode=ReverseLinkList(CurrentNode,CurrentNode->next);   CurrentNode->next=PreNode;   return FirstNode; /*返回的是尾节点的指针,即反转后新链表的头指针*/ } }