问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值。
首先定义链表结点
公开课ListNode { int val; ListNode下=零; ListNode (int val) { 这一点。val=val; } }
<>强思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈。最后在遍历栈出栈。强>
公共静态StackprintListReverse_Stack (ListNode ListNode) { Stack 堆栈=new Stack (); 如果(listNode !=null) { ListNode p=ListNode; 而(p !=null) { stack.add (p.val); p=p.next; } } 返回栈; }
<>强思路2:直接遍历链表,按照头插法依次插入ArrayList即可强>
公共静态ArrayListprintListFromTailToHead (ListNode ListNode){//表头也存储元素 ArrayList 打?new ArrayList (); 如果(listNode==null) { 返回打印; } int添加=0; ListNode p=ListNode; 而(p !=null) { 打印。添加(0,p.val); p=p.next; } 返回打印; }
<>强思路3:可以使用递归的思想(本质也是栈的思想)强>
公共ArrayListprintListReversely_Recursively (ListNode ListNode) { ArrayList 打?new ArrayList (); 如果(listNode==null) { 返回打印; } print.addAll (printListReversely_Recursively (listNode.next)); print.add (listNode.val); 返回打印; }
<强>总结强>
以上就是本文关于Java编程实现从尾到头打印链表代码实例的全部内容,感兴趣的朋友可以参阅:用Java打印九九除法表代码分析,Java程序打印奥林匹克标志方法详解,Java编程用指定字符打印菱形实例以及本站其他相关专题,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对网站的支持!