单向链表-循环穿链
链表的是这样的一种简单实现:
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
题目要求:给定一个 int[] 数组,把数组中所有的值封装为一个ListNode对象并连续串联起来,返回头节点即可,利用该头节点可找到链表中封装的所有值。(我自己瞎编的题目,它实际上可看作Leetcode中一道题中的一小步骤)
样例:
输入:[1,2,3,4]
输出:node(1) -> node(2) -> node(3) -> node(4)
要求实现如下java方法:
public ListNode seriesArray(int[] arr){
}
以下是我自己的实现:
public static ListNode seriesArray(int[] arr){
ListNode firstNode = null;
ListNode lastNode = firstNode;
for (int i = 0;i<arr.length;i++){
ListNode newNode = new ListNode(arr[i]);
if (lastNode == null){
lastNode = newNode;
firstNode = lastNode;
}else {
lastNode.next = newNode;
//保留当前新节点的引用
lastNode = newNode;
}
}
return firstNode;
}
可能看起来有点简单,但是实际上对于我来说也不是很快就实现了的,毕竟脑子笨嘛。
接下来我们写一个主函数测试一下:
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6};
ListNode node = seriesArray(arr);
//遍历打印出node中封装的所有值
while (node!=null){
System.out.println(node.val);
node = node.next;
}
}