JAVA将一个链表转换为一个数组。输入: 1->2->3->null 输出: [1,2,3]
时间: 2024-05-01 21:16:00 浏览: 151
以下是将链表转换为数组的Java代码:
```java
public static int[] listToArray(ListNode head) {
// 统计链表长度
int length = 0;
ListNode curr = head;
while (curr != null) {
length++;
curr = curr.next;
}
// 将链表转换为数组
int[] arr = new int[length];
curr = head;
for (int i = 0; i < length; i++) {
arr[i] = curr.val;
curr = curr.next;
}
return arr;
}
```
其中,`ListNode` 是链表的节点定义,包含两个字段:`val` 表示节点的值,`next` 表示指向下一个节点的指针。
相关问题
作为一个Java开发人员,1->21->3->4->5按照->分割后,随机取其中一位数字就能获取上下两个数字
这个问题可以通过将链表中的元素转化为数组,然后使用随机数生成器来随机选择一个元素。然后可以通过查找数组中该元素的索引来获取其前一个和后一个元素。
以下是一个示例代码:
```java
import java.util.Arrays;
import java.util.Random;
public class Example {
public static void main(String[] args) {
// 创建链表
Node head = new Node(1);
Node node1 = new Node(21);
Node node2 = new Node(3);
Node node3 = new Node(4);
Node node4 = new Node(5);
head.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
// 将链表中的元素转化为数组
int[] arr = new int[5];
Node temp = head;
int i = 0;
while (temp != null) {
arr[i++] = temp.val;
temp = temp.next;
}
// 随机选择一个元素
Random random = new Random();
int index = random.nextInt(arr.length);
int selected = arr[index];
// 查找该元素的前一个和后一个元素
int prev = index > 0 ? arr[index - 1] : -1;
int next = index < arr.length - 1 ? arr[index + 1] : -1;
// 输出结果
System.out.println("随机选择的元素:" + selected);
System.out.println("前一个元素:" + prev);
System.out.println("后一个元素:" + next);
}
}
class Node {
int val;
Node next;
Node(int val) {
this.val = val;
}
}
```
在上面的例子中,我们首先创建了一个链表,然后将其转换为数组。接下来,我们使用 `Random` 类来随机选择一个数组元素。最后,我们通过查找该元素在数组中的索引来获取其前一个和后一个元素。
阅读全文