题解 | #从尾到头打印链表#
从尾到头打印链表
http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035
第一题
/**
* struct ListNode {* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
// 这些编程网站一直喜欢搞的边界问题
// 有一个head=[]
// 这种边界问题就是测试那种工作的人 要研究的
if(head == NULL)
return vector<int>(0);
// 保存头结点 后面 第一次遍历知道长度 就走了
ListNode *temp;
temp=head;
int len=0;
// 知道长度
while (!head->next==NULL){
head=head->next;
len++;
}
head=temp;
// 定义vector数字的代码用来回答
vector<int> ans(len+1);
// 反向检查 填充回数组
for (int i =len;i>=0;i--){
ans[i]=head->val;
head=head->next;
}
return ans;
// // 这些编程网站一直喜欢搞的边界问题
// // 有一个head=[]
// // 这种边界问题就是测试那种工作的人 要研究的
// if(head == NULL)
// return vector<int>(0);
// vector<int> ans;
// while (!head->next==NULL){
// ans.insert(ans.begin(),head->val);
// head=head->next;
// }
// ans.insert(ans.begin(),head->val);
// return ans;
}
};
题解 文章被收录于专栏
一遍做剑指offer 一边保存做题步骤 并附带详细注释哦