客户分析:
输入一个单链表,从尾部到头部打印输出arraylist。arraylist==vector
查找资料分析:
大体有1种思路:
1.利用stack先进后出的特性,首先将链表从头到尾存入stack中,然后从stack中出栈,将元素一次存入vector中。比较流行的方式。
参考资料
https://blog.youkuaiyun.com/u013187057/article/details/81175306
方案设计:
1.先将list中数据stack,利用while(cmove!=nullptr);
2.取栈顶元素放入vector中
3.移除栈顶元素
4.直到stack元素为空,说明 移动完毕
5.返回vector
c++计算机编程实现
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector <int> arraylist;
stack<int> list_reverse;
ListNode *cmove = head;
while(cmove != nullptr)//c++11标准
{
list_reverse.push(cmove->val);
cmove=cmove->next;
}
while(!list_reverse.empty())
{
arraylist.push_back(list_reverse.top());
list_reverse.pop();
}
return arraylist;
}
};
实验结果 3ms 480k
实验总结:
本次实验充分利用了stack的数据结构,很好的实现了单链表的反转打印的效果。这次实验自己只做了代码优化。
实验用时2.30