/**
* 面试题5:从尾到头打印链表
* 思路:
* 1:后进先出,栈
* 2:递归,每次打印下一节点,在打印当前节点
* 3:头插法
*/
public class ListNode{
public int number;
ListNode next;
}
/**
* 栈实现
* @param node
*/
public void PrintListReversingly_Iteratively(ListNode node){
if(node==null){
return;
}
ListNode tmp = node;
Stack<ListNode> stack = new Stack<ListNode>();
while(tmp!=null){
stack.push(tmp);
tmp = tmp.next;
}
while(!stack.isEmpty()){
System.out.println(stack.pop().number);
}
}
/**
* 递归实现
*/
public void PrintListReversinglyRecursively(ListNode node){
if(node == null){
return;
}
PrintListReversinglyRecursively(node.next);
System.out.println(node.number);
}
/**
* 头插法
*/
public void PrintListReversinglyHeadly(ListNode node){
if(node == null){
return;
}
ListNode p = node.next;
while(p!=null){
ListNode tmp = p.next;
p.next = node;
node = p;
p = tmp;
}
while(node!=null){
System.out.println(node.number);
node = node.next;
}
}
剑指offer之从尾到头打印链表
最新推荐文章于 2022-05-17 22:34:04 发布