不改变链表结构:“后进先出”
遍历链表,将节点依次添加进栈中。再从栈中依次取出顶点元素作为从后向前遍历链表。
vector<int> result;//存储输出的节点的值
stack<struct ListNode*> nodes;//用栈来存储每个节点
struct ListNode* pNode = head;//从链表头开始
while (pNode != NULL){ //链表的所有节点全部入栈
nodes.push(pNode);
pNode = pNode->next;
}
while (!nodes.empty()){ //出栈:后进先出
pNode = nodes.top();
result.push_back(pNode->val);
nodes.pop();
}
return result;