剑指offer面试题6:从尾到头打印链表

从尾到头打印链表


顺序遍历链表,元素放入栈中,在从栈中先进后出读取数据

public void method1() {
		LinkedList ll = new LinkedList(); 
        Stack stack=new Stack();
		ll.add(1);
		ll.add(-3);
		ll.add(199);
		ll.add(13);
		ll.add(0);
		ll.add(7);
		ll.add(6);
		
		Iterator itr = ll.iterator();
		
		while(itr.hasNext()) {
			Integer temp = (Integer) itr.next();
			stack.add(temp);
		}
		
		for(Integer i : ll) {
			System.out.println("sdfd:"+i);
		}
		
		for(int count = 0 ; count < ll.size(); count++) {
			System.out.println("sdsdfd:"+ll.get(count));
		}
		
		
		while(!stack.isEmpty()) {
			Integer temp = (Integer) stack.pop();
			System.out.println("temp:"+temp);
		}
	}

递归,但是当链表过长的时候,会导致函数调用的层级很深,从而可能导致函数调用栈溢出

public void method2() {
		LinkedList ll = new LinkedList(); 
		ll.add(1);
		ll.add(-3);
		ll.add(199);
		ll.add(13);
		ll.add(0);
		ll.add(7);
		ll.add(6);
		
		Iterator itr = ll.iterator();
		if(itr.hasNext()) {
			rever(itr);
		}
	}
	
	public static void rever(Iterator itr) {
		Integer temp = (Integer)itr.next();
		if(itr.hasNext()) {
			rever(itr);
		}
		System.out.println("rever:"+ temp);
	}

你可能感兴趣的:(剑指offer-java,链表)