/**
* 面試題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之從尾到頭打印鏈表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.