可运用两种方法打印:
方法一:循环算法
方法二:递归压栈调用
方法一:
先调用我们已经写好的链表头文件List.h链表构造方面不过多说明。
void PrintReverse(ListNode *first)
{
ListNode *end = NULL; // 要打印结点的后一个结点
while (end != first) {
ListNode *cur = first;
// 找到要打印结点
while (cur->next != end) {
cur = cur->next;
}
// 要打印的结点
printf("%d ", cur->data);
end = cur;
}
}
1.通过cur->next !=end循环语句,当为空时,我们退出循环。并且输出最后的结构体单元。
2.通过给*end孔结构体赋值最后的cur的实现从尾到头输出。
方法二:
void PrintReverseRecursion(ListNode *first)
{
if (first->next == NULL) {
printf("%d ", first->data);
}
else {
PrintReverseRecursion(first->next);
// 链表中,除了 first 之外的所有结点都逆序打印了
printf("%d ", first->data);
}
}
我们通过递归压栈,实现函数体与函数语句之间的循环,最后打印最后端取出元素依次打印结果。