思路
先想到用头插法进行链表逆置
Line 13: Char 19: runtime error: member access within address 0x7f076e8410e0 with insufficient space for an object of type 'ListNode' (solution.cpp)
0x7f076e8410e0: note: pointer points here
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:23:19
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
ListNode* p, * q, * tempHead;
tempHead = head;
tempHead->next = NULL;
q = head;
p = head->next;
while (p != NULL) {
q = p;
p = p->next;
q->next = tempHead->next;
tempHead->next = q;
}
vector<int> v;
ListNode* a = tempHead->next;
while (a != NULL) {
v.push_back(a->val);
a = a->next;
}
return v;
}
};
头结点未初始化而报错
思路2
用stack来解决逆向输出的问题
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
stack<ListNode*> sta1;
while (head!=NULL)
{
sta1.push(head);
head = head->next;
}
vector<int> retv;
while (!sta1.empty()) {
head = sta1.top();
retv.push_back(head->val);
sta1.pop();
}
return retv;
}
};
不会C++的链表操作,初始化等