java實現輸入一連結串列的頭結點,從尾到頭反過來打印出每個結點的值
阿新 • • 發佈:2019-01-03
一,
非遞迴方式實現
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=newMySingleLinkList(); 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 voidrevertList(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); } }