将二维数组转化为链式储存的过程需要以下步骤:
- 定义链表节点
- 每个链表节点需要保存数组元素值及其行列信息
-
可以使用Java中的类或结构体来实现
-
创建一个链表并将节点依次添加进去
- 遍历二维数组的每个元素,将元素的值和行列信息封装成链表节点,然后将节点添加到链表的尾部
- 可以使用Java中的链表或其他数据结构来存储节点
下面是一个示例代码:
public class ArrayToList {
public static class Node {
int val;
int row;
int col;
Node next;
public Node(int val, int row, int col) {
this.val = val;
this.row = row;
this.col = col;
this.next = null;
}
}
public Node arrayToList(int[][] arr) {
Node dummy = new Node(-1, -1, -1);
Node tail = dummy;
int m = arr.length;
int n = arr[0].length;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
tail.next = new Node(arr[i][j], i, j);
tail = tail.next;
}
}
return dummy.next;
}
public static void main(String[] args) {
int[][] arr = {{1,2,3}, {4,5,6}, {7,8,9}};
Node head = new ArrayToList().arrayToList(arr);
while (head != null) {
System.out.printf("(%d, %d, %d) -> ", head.val, head.row, head.col);
head = head.next;
}
System.out.println("null");
}
}
上面的代码可以将一个三行三列的二维数组转化为链式储存的形式,并打印出链表中的元素。
另外一个示例代码是使用Map来存储链表节点,更方便地查找元素:
public class ArrayToList {
public static class Node {
int val;
int row;
int col;
public Node(int val, int row, int col) {
this.val = val;
this.row = row;
this.col = col;
}
}
public Map<Integer, Node> arrayToList(int[][] arr) {
Map<Integer, Node> map = new HashMap<>();
int m = arr.length;
int n = arr[0].length;
int idx = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
Node node = new Node(arr[i][j], i, j);
map.put(idx, node);
idx++;
}
}
return map;
}
public static void main(String[] args) {
int[][] arr = {{1,2,3}, {4,5,6}, {7,8,9}};
Map<Integer, Node> map = new ArrayToList().arrayToList(arr);
for (int i = 0; i < map.size(); i++) {
System.out.printf("(%d, %d, %d) -> ", map.get(i).val, map.get(i).row, map.get(i).col);
}
System.out.println("null");
}
}
上述代码可以将二维数组转化为一个Map数据结构,key为元素在数组中的编号,value为链表节点,便于查找元素及其所在的行列信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Java如何实现将二维数组转化为链式储存 - Python技术站