C语言基础07:巧用递归算法实现链表逆序

【C语言基础07:巧用递归算法实现链表逆序】递归一定要设置明确的结束条件 , 如果不设置限制条件,递归就是一个死循环 。

:1.不生成新链表,利用打印函数实现逆序输出

PrintList_Recursion这个打印数据的函数,在被调用时,原函数暂停,开始执行被调用的函数,被调用的函数执行完毕后 , 才会继续执行原函数 。利用这个原理,实现数据的逆序输出


C语言基础07:巧用递归算法实现链表逆序

:2.用递归的方法生成新的逆序链表

生成新的链表,创建一个全局变量
Node *new_Head;//全局变量,存储新的链表的头指针
C语言基础07:巧用递归算法实现链表逆序

Node* Reverse_Recursion(Node* head_Pointer){if(NULL == head_Pointer->pNext){ //递归退出条件,指针指向最后一个节点new_Head = head_Pointer;//新链表的头指针指向旧链表最后一个节点return new_Head;}Reverse_Recursion(head_Pointer->pNext); //当head_Pointer=150时head_Pointer->pNext->pNext = head_Pointer;//节点250的pNext指针指向节点150head_Pointer->pNext = NULL;return new_Head;}
int main(){Node* pHead = NULL;pHead = Insert_Tail(pHead,1);//尾插法增加节点pHead = Insert_Tail(pHead,2);pHead = Insert_Tail(pHead,3);pHead = Insert_Tail(pHead,4);pHead = Insert_Tail(pHead,5);pHead = Insert_Tail(pHead,6);pHead = Insert_Tail(pHead,7);pHead = Insert_Tail(pHead,8);pHead = Insert_Tail(pHead,9);pHead = Insert_Tail(pHead,10);pHead = Insert_Tail(pHead,11);pHead = Insert_Tail(pHead,12);PrintList(pHead);//打印旧链表数据new_Head=Reverse_Recursion(pHead);PrintList(new_Head);//打印逆序生成的新链表数据return 0;}
C语言基础07:巧用递归算法实现链表逆序

相关经验推荐