📌  相关文章
📜  用于打印链接列表的反向而不实际反转的 C++ 程序(1)

📅  最后修改于: 2023-12-03 14:56:20.828000             🧑  作者: Mango

用于打印链接列表的反向而不实际反转的 C++ 程序

本程序实现了打印链接列表的反向,但并不实际反转链表。该程序特别适用于需要保持链表原始顺序但又需要对链表进行反向打印的场景。

实现思路

本程序使用递归实现,具体思路如下:

  1. 从链表的头节点开始递归,如果当前节点为空,则结束递归;
  2. 递归到链表的尾节点时,先打印尾节点的值,然后返回上一个节点;
  3. 回到上一个节点后,再打印上一个节点的值。

通过不断递归,程序将实现对链表的反向打印。

代码实现
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

void printListReversingly(ListNode* head) {
    if (head == NULL) return;
    if (head->next != NULL)
        printListReversingly(head->next);
    cout << head->val << " ";
}
使用示例
// 创建链表
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(2);
ListNode* node3 = new ListNode(3);
ListNode* node4 = new ListNode(4);
node1->next = node2;
node2->next = node3;
node3->next = node4;

// 反向打印链表
printListReversingly(node1); // 输出: 4 3 2 1
总结

本程序通过递归实现了对链表的反向打印,适用于需要保持链表原始顺序但又需要对链表进行反向打印的场景。其实现思路简单,易于理解和实现。