【剑指Offer】003 从尾到头打印链表

【剑指Offer】003 从尾到头打印链表

题目链接: 剑指Offer 第三题 牛客网

题目描述:

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


题目很简单,但值得注意的是,要求要从尾到头打印,当时写了半天,一看,我擦。。。

思路有两个:一个是利用递归,或者栈,当然,递归也是用栈来实现的;

                    另一个是用特里所给定的库函数操作,这里就不详细写了。


递归 C++版:

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
	vector<int>v;
 	vector<int> printListFromTailToHead(ListNode* head) {
		if(head!=NULL)
    		{
        		if (head->next!=NULL)
	  		{
		  		printListFromTailToHead(head->next); 
	  		}
       			v.push_back(head->val);
	  
    		}
        	return v;
	}
};
递归 Java版:
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
	ArrayList<Integer>arr=new ArrayList<Integer>();
	public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
		if(listNode!=null)
		{
			this.printListFromTailToHead(listNode.next);
			arr.add(listNode.val);
		}
		return arr;
	}
}

其实这两个是不是差不多阿,就是递归的思想,只不过C++有指针,而Java没有而已。


日期:2018/2/10-14:18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值