新開公衆號,歡迎關注:裏面有幾個T的免費的學習資源
/*給定一個鏈表,從尾部到頭部打印,
* 輸出鏈表節點的值*/
package offer1.PrintLinkListFromTailToFront;
/*給定一個鏈表,從尾部到頭部打印,
* 輸出鏈表節點的值*/
public class Own {
public static class ListNode{
int val;
ListNode next=null;
public ListNode(int val) {
this.val=val;
}
}
public Integer[] printListFromTailToHead(ListNode listNode){
int len=0;
ListNode temp=listNode;
//1.第一輪遍歷鏈表,統計節點個數
while (listNode!=null) {
++len;
listNode=listNode.next;
}
//2.第二輪遍歷數組,把遍歷的節點的值從數組後面開始往前面填充
Integer[] nodes=new Integer[len];
int i=len-1;
while (temp!=null) {
nodes[i--]=temp.val;
temp=temp.next;
}
return nodes;
}
//測試
public static void main(String[] args) {
ListNode root=new ListNode(1);
ListNode node1=new ListNode(2);
ListNode node2=new ListNode(3);
ListNode node3=new ListNode(4);
root.next=node1;
node1.next=node2;
node2.next=node3;
Own a=new Own();
Integer[]s=a.printListFromTailToHead(root);
for (int i = 0; i < s.length; i++) {
System.out.print(s[i]+" ");
}
}
}