新开公众号,欢迎关注:里面有几个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]+" ");
}
}
}