剑指offer 题目3

102 阅读1分钟

题目描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

大致思路

  • 倒序过来,就先存到栈中,然后再一个个存到链表中去就行了

代码

vector<int> printListFromTailToHead(ListNode* head) {
	vector<int> arry;
	stack<int> int_stack;
	ListNode* temp_ptr = head;
	while (temp_ptr != NULL){
		int_stack.push(temp_ptr->val);
		temp_ptr = temp_ptr->next;
	}

	while(!int_stack.empty()){
		arry.push_back(int_stack.top());
		int_stack.pop();
	}

	return arry;
}

结论

思路很简单,也没做过多的思考其它的方案,如果说原本的数据不是 int,而是一个很大的数据结构的话,那么思路一样,此外可能会考虑直接先遍历把各个节点的地址存起来,然后再进行同样的处理。