在牛客网上看到的在线编程题:输入一个链表,从尾到头打印链表每个节点的值。
有个同学写的不错,如下所示:
/*************************************************/
/*********************** start *******************/
/*************************************************/
/**
* 输入一个链表,从尾到头打印链表每个节点的值。
*/
public static ArrayList<Integer> listNodes = new ArrayList<>();
public static ArrayList<Integer> printListNode(ListNode listNode) {
if (listNode != null) {
printListNode(listNode.next);
listNodes.add(listNode.val);
System.out.println("printListNode listNode.val ="+listNode.val);
}
for (int i = 0; i < listNodes.size(); i++) {
System.out.println("printListNode="+listNodes.get(i)+"--size="+listNodes.size());
}
return listNodes;
}
public static class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public static void testPrintNodeListFromTail2Head(){
//construct data
List<ListNode> list = new ArrayList<ListNode>();
ListNode firstNode = new ListNode(0);
list.add(firstNode);
for (int i = 1; i < 20; i++) {
ListNode newNode = new ListNode(i);
System.out.println("testPrintNodeListFromTail2Head listSize:" + list.size()+"--i-1="+(i-1));
list.get(i-1).next = newNode;
list.add(newNode);
}
printListNode(firstNode);
}
/*************************************************/
/*********************** end ********************/
/*************************************************/
log如下:
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=19--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=18--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=17--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=16--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=15--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=14--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=13--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=12--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=11--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=10--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=9--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=8--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=7--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=6--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=5--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=4--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=3--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=2--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=1--size=20
11-30 13:12:57.048 1610-1610/? I/System.out: printListNode=0--size=20