牛客网上面的一个题
题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> list; vector<int> rlist; ListNode* tmp=head; while(tmp!=NULL){ list.push_back(tmp->val); tmp=tmp->next; } for(vector<int>::reverse_iterator riter=list.rbegin();riter!=list.rend();riter++){ rlist.push_back(*riter); } return rlist; } };
最开始没有注意函数的返回类型,结构写了个反转链表的函数,记下来供参考:
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: ListNode* printListFromTailToHead(ListNode* head) { vector<ListNode*> list; ListNode* revhead; ListNode* revtmp; ListNode* tmp=head; while(tmp!=NULL){ list.push_back(tmp); tmp=tmp->next; } for(vector<ListNode*>::reverse_iterator riter=list.rbegin();riter!=list.rend();riter++){ if(riter==list.rbegin()){ revtmp=*riter; revtmp->next=*(riter+1); revhead=revtmp; }else { if(riter==list.rend()-1){ revtmp=*riter; revtmp->next=NULL; }else{ revtmp=*riter; revtmp->next=*(riter+1) } } } return revhead; } };