📅  最后修改于: 2023-12-03 15:07:37.852000             🧑  作者: Mango
在 C++ 中,我们可以使用指针来操作链表结构,可以通过遍历链表获取每个节点的值,也可以通过反转链表来打印链表逆序。
遍历链表获取每个节点的值的基本思路是,从头节点开始,依次遍历链表,将每个节点的值存储到一个 vector 中,再将 vector 中的元素倒序输出即可。
#include <iostream>
#include <vector>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void printListReverse(ListNode* head) {
vector<int> res;
ListNode* p = head;
while(p != NULL) {
res.push_back(p->val);
p = p->next;
}
for(int i = res.size() - 1; i >= 0; i--) {
cout << res[i] << " ";
}
}
反转链表的基本思路是,将当前节点的 next 指针指向上一个节点,再将当前节点指向下一个节点,直到遍历到链表的末尾。反转后,从头节点开始依次遍历链表即可打印链表逆序。
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
ListNode *pre = NULL, *cur = head, *temp;
while(cur != NULL) {
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
void printListReverse(ListNode* head) {
ListNode* p = reverseList(head);
while(p != NULL) {
cout << p->val << " ";
p = p->next;
}
}
以上就是在 C++ 中打印链表逆序的两种方法,根据实际情况选择合适的方法进行使用。