题目描述:设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。
分析: 从尾到头反向输出可以考虑使用头插法。
void Reverse(LinkList L) {LNode *p = L->next;  // 指针 p 指向链表的第一个结点LNode *r;            // 临时指针 r,用于保存下一个结点的位置L->next = NULL;      // 将原链表的尾部指针置为 NULL,以便反转后的链表正确终止// 开始遍历链表,反转结点指针while (p) {r = p->next;     // 保存下一个结点的位置p->next = L->next;  // 将当前结点的指针指向反转后的链表头部L->next = p;     // 更新链表头部指针p = r;           // 移动到下一个结点}// 打印反转后的链表的值,注意这里可能会导致死循环,如果只是想反转链表而不需要打印,可以移除这个循环while (L->next) {printf("%d ", L->next->data);  // 打印结点的值L = L->next;     // 移动到下一个结点}
}