public final class Main {
private static Node[] nodesFor(final int... values) {
int n = values.length;
final Node[] nodes = new Node[n];
while (n > 0) {
nodes[--n] = new Node(values[n]);
}
return nodes;
}
public static void main
(final String[] argv
) { for (final Node node : nodesFor(5, 15, 30)) {
list.add(node);
}
}
}
private Node head;
public void add(final Node node) {
if (head == null) {
head = new Node();
}
Node cur;
for (cur = head; cur.next != null; cur = cur.next)
;
cur.next = node;
}
final StringBuilder builder = new StringBuilder("Linked List::");
for (Node cur = head.next; cur != null; cur = cur.next) {
builder.append("\n ").append(cur.data);
}
return builder.toString();
}
}
final class Node {
int data;
Node next;
Node(final int data) {
this.data = data;
}
Node() { }
}
cHVibGljIGZpbmFsIGNsYXNzIE1haW4gewoKICBwcml2YXRlIHN0YXRpYyBOb2RlW10gbm9kZXNGb3IoZmluYWwgaW50Li4uIHZhbHVlcykgewogICAgaW50IG4gPSB2YWx1ZXMubGVuZ3RoOwogICAgZmluYWwgTm9kZVtdIG5vZGVzID0gbmV3IE5vZGVbbl07CiAgICB3aGlsZSAobiA+IDApIHsKICAgICAgbm9kZXNbLS1uXSA9IG5ldyBOb2RlKHZhbHVlc1tuXSk7CiAgICB9CiAgICByZXR1cm4gbm9kZXM7CiAgfQoKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmd2KSB7CiAgICBmaW5hbCBMaXN0IGxpc3QgPSBuZXcgTGlzdCgpOwogICAgZm9yIChmaW5hbCBOb2RlIG5vZGUgOiBub2Rlc0Zvcig1LCAxNSwgMzApKSB7CiAgICAgIGxpc3QuYWRkKG5vZGUpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzdCk7CiAgICB9CiAgfQp9CgpmaW5hbCBjbGFzcyBMaXN0IHsKCiAgcHJpdmF0ZSBOb2RlIGhlYWQ7CgogIHB1YmxpYyB2b2lkIGFkZChmaW5hbCBOb2RlIG5vZGUpIHsKICAgIGlmIChoZWFkID09IG51bGwpIHsKICAgICAgaGVhZCA9IG5ldyBOb2RlKCk7CiAgICB9CiAgICBOb2RlIGN1cjsKICAgIGZvciAoY3VyID0gaGVhZDsgY3VyLm5leHQgIT0gbnVsbDsgY3VyID0gY3VyLm5leHQpCiAgICAgIDsKICAgIGN1ci5uZXh0ID0gbm9kZTsKICB9CgogIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigiTGlua2VkIExpc3Q6OiIpOwogICAgZm9yIChOb2RlIGN1ciA9IGhlYWQubmV4dDsgY3VyICE9IG51bGw7IGN1ciA9IGN1ci5uZXh0KSB7CiAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiAiKS5hcHBlbmQoY3VyLmRhdGEpOwogICAgfQogICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICB9Cn0KCmZpbmFsIGNsYXNzIE5vZGUgewoKICBpbnQgZGF0YTsKICBOb2RlIG5leHQ7CgogIE5vZGUoZmluYWwgaW50IGRhdGEpIHsKICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgfQoKICBOb2RlKCkgeyB9Cn0=