您的位置:首页 > 编程语言 > Java开发

java 逆序打印链表的值

2016-11-30 13:14 190 查看
在牛客网上看到的在线编程题:输入一个链表,从尾到头打印链表每个节点的值。

有个同学写的不错,如下所示:

/*************************************************/
/*********************** 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 java