题目:输入链表头,从尾到头打印该单向链表
思路:
1、确定是否允许修改输入,一般都是不允许修改输入的(不能将链表翻转)
2、最后遍历到的反而先输出,最先遍历到的最后输出,考虑到栈结构。C语言中没有直接使用栈的函数
3、递归在本质上是一个栈结构,可以使用递归
写法(C语言):
/*
* 链表格式
*/
typedef struct List{ int i_Key; struct List *pt_Next; }T_List, *PT_List; PT_List g_ptListHead; /*
* 反向打印链表数据
*/ void ShowList(PT_List pt_cur) { if (pt_cur != NULL) { if (pt_cur->pt_Next != NULL) {
/* 递归调用 */ ShowList(pt_cur->pt_Next); } printf("%d\n", pt_cur->i_Key); } }
注意:递归调用如果深度太深,会占用很多栈中的空间资源(函数调用保存现场)。
原文:https://www.cnblogs.com/lcsgj/p/13066617.html