C语言 逆向输出链表
原理
递归调用先遍历整个链表,当遇到L指向NULL
时返回整个链表,再返回的过程中对链表进行输出.
递归调用在底层其实是对线程栈的压栈
和出栈
操作,每调用一次都会压栈一次,并记录相关的局部变量信息,当递归结束返回时,是出栈操作.
实现代码
结构体
typedef struct SqNode {
int data;
struct SqNode * Next;
}SqNode,*SqList;
函数体
SqList ReversedPrintfElement(SqNode* L)
{
//递归调用实现逆向输出
//注: 因为带头结点,会一并大头结点打印出来,需要传参的时候需要把头节点避开L->Next
if (L == NULL)
return;//递归调用出口
ReversedPrintfElement(L->Next);//递归调用
printf("%d\t", L->data);//打印结果
}