給定一個節點為頭節點,從尾到頭反過來打印出每個節點的值
阿新 • • 發佈:2019-01-10
題目:輸入一個連結串列的頭節點,從尾到頭打印出每個節點的值。已知連結串列節點組成只有節點值(value)和下一個節點(next)。如下:
class Node<E>{
public E value;
public Node<E> next;
}
解法一:新建一個棧,從頭(輸入的頭節點)到尾遍歷連結串列,將每一個節點的值放入棧中,遍歷完成後。再執行出棧操作。
public void printReversingly_stack(Node<E> head){
Stack<E> stack = new Stack<E>();
Node<E> cur = head;
while(cur != null){
stack.push(cur.value);
cur = cur.next;
}
while(!stack.isEmpty()){
System.out.print(stack.pop()+"\t");
}
}
解法二:使用遞迴的思想。方法一用到了棧,而遞迴本質上就是棧結構,所以當然也能使用遞迴來解決。要實現反過來輸出連結串列,這裡我們在遍歷每一個節點的時候,都先遞迴輸出後一個節點的值,再輸出自身。
public void printReversingly_Recurively(Node<E> head){
if (head != null) {
if (head.next != null) {
printReversingly_Recurively(head.next);
}
System.out.print(head.value+"\t");
}
}