问题描述:输入一个链表,从尾到头打印链表每个节点的值。
问题分析:
1.链表只有一个指向下一个节点的指针,却没有指向上一个节点的指针。可要从尾到头打印链表每个节点的值有两种办法:循环与递归。
2.从尾到头打印,即先打印后进去的数据,后打印先进去的数据,感觉就是让栈来存储这些数据并打印出来啊,所以这道题需要借助栈来实现。
3.顺序遍历一遍链表,并将链表中的每个节点压入栈中,然后让数据依次出栈即可得到逆序的链表。
源代码如下:
vector<int> printListFromTailToHead(ListNode* head) {
stack<ListNode* > node;
ListNode* cur = head;
while(cur != NULL) {
node.push(cur);
cur = cur->next;
}
vector<int> output;
while(!node.empty()) {
cur = node.top();
int tmp = cur->val;
output.push_back(tmp);
node.pop();
}
return output;
}