逆序访问单链表

This is a simple but important algorithm when dealing with singly linked list.

This algorithms can reversely access a singly linked list using O(n) time. Below is my code in Java.

class Node{
    Node next;
    int val;
}

class SinglyLinkedList{
    
    Node head;
    Node tail;
    
    //append a new Node to tail
    void append(Node nd){
        
        //head and tail must both be null or both be not null
        if(head == null && tail == null){
            head = nd;
            tail = nd;
            
        }else{
            tail.next = nd;
            tail = nd;
        }
    }

    void print(){
        Node temp = head;
        while(temp != null){
            System.out.print(temp.val + " ");
            temp = temp.next;
        }
    }
    
    void printInReverseOrder(){
        printInReverseOrder_General(head);
    }

    void printInReverseOrder_General(Node from){
        if(from == null){
            return;
        }
        Node temp = from;
        
        printInReverseOrder_General(temp.next);
        System.out.print(temp.val + " ");
        
    }
}

 

posted @ 2014-04-11 05:28  门对夕阳  阅读(203)  评论(0编辑  收藏  举报