1. 程式人生 > >java實現輸入一連結串列的頭結點,從尾到頭反過來打印出每個結點的值

java實現輸入一連結串列的頭結點,從尾到頭反過來打印出每個結點的值

一,
非遞迴方式實現
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Stack;

/**
 * 輸入一連結串列的頭結點,從尾到頭反過來打印出每個結點的值
 * 非遞迴方式實現
 */
public class Revertlist {
    public static void main(String[] args) throws ParseException {
        MySingleLinkList  node1=new 
MySingleLinkList(); MySingleLinkList node2=new MySingleLinkList(); MySingleLinkList node3=new MySingleLinkList(); node1.data=1; node2.data=2; node3.data=4; node1.next=node2; node2.next=node3; revertList(node1); } public static void
revertList(MySingleLinkList headNode){ Stack<MySingleLinkList> stack = new Stack<MySingleLinkList>(); while(headNode!=null) { stack.push(headNode); headNode = headNode.next; } while(!stack.empty()){ System.out.println(stack.pop().data
); } } }
二,遞迴方式實現
/**
 * 輸入一連結串列的頭結點,從尾到頭反過來打印出每個結點的值
 * 遞迴方式實現
 */
public class RevertListRecur {
    public static void main(String[] args){
        MySingleLinkList  node1=new MySingleLinkList();
        MySingleLinkList  node2=new MySingleLinkList();
        MySingleLinkList  node3=new MySingleLinkList();
        node1.data=1;
        node2.data=2;
        node3.data=4;
        node1.next=node2;
        node2.next=node3;
        revertList(node1);
    }
    public static void revertList(MySingleLinkList headnode){
        if(headnode!=null){
            if(headnode.next!=null){
                revertList(headnode.next);
            }
        }
        System.out.println(headnode.data);
    }
}