剑指offer 从尾到头打印链表

剑指offer 从尾到头打印链表

  • 题目描述

输入一个链表,从尾到头打印链表每个节点的值。

** 输入描述:**

输入为链表的表头

** 输出描述:**

输出为需要打印的“新链表”的表头

  • 解法一

用递归来解决。用时0ms,占用空间8568k。

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> ret;
    vector<int> printListFromTailToHead(struct ListNode* head) {
        if (head == NULL)
			return ret;

		if (head)
		{
			cout << head->val << endl;
			printListFromTailToHead(head->next);
		}
		ret.push_back(head->val);
		return ret;
    }
};
  • 解法二

将链表压入栈,然后再输出到vector。用时0ms,占用空间8568k。

class Solution {
public:
	vector<int> printListFromTailToHead(struct ListNode* head) {
		vector<int> ret;
		if (head == NULL)
			return ret;

		stack<int> s;
		while (head){
			s.push(head->val);
			head = head->next;
		}
		while (!s.empty()){
			ret.push_back(s.top());
			s.pop();
		}

		return ret;
	}
};
弹钢琴的猫 /
Published under (CC) BY-NC-SA in categories 算法  tagged with 剑指offer