如何将链表的结点都存到数组中
时间: 2025-06-16 15:44:28 浏览: 16
### 链表节点存储到数组中的实现
将链表的所有节点存储到数组中可以通过遍历链表并逐个将节点的值存入数组来完成。以下是具体的实现方式:
#### 方法描述
通过定义一个动态数组(如 `ArrayList` 或者 C++ 中的 `vector`),在遍历链表的过程中,逐一将当前节点的值加入数组中。这种方法的时间复杂度为 O(n),其中 n 表示链表的长度。
---
#### Python 实现代码
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def linked_list_to_array(head):
result = [] # 创建一个空列表用于存储链表节点的值
current = head # 当前指针初始化为链表头部
while current is not None: # 遍历整个链表
result.append(current.val) # 将当前节点的值添加到列表中
current = current.next # 移动到下一个节点
return result # 返回最终的结果列表
```
此代码片段展示了如何将单向链表转换成数组[^1]。
---
#### Java 实现代码
```java
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static List<Integer> linkedListToArray(ListNode head) {
List<Integer> resultList = new ArrayList<>(); // 创建一个动态数组
ListNode currentNode = head; // 初始化当前节点为链表头结点
while (currentNode != null) { // 遍历链表直到结束
resultList.add(currentNode.val); // 添加当前节点的值到结果数组
currentNode = currentNode.next; // 更新当前节点为其下一节点
}
return resultList; // 返回结果数组
}
public static void main(String[] args) {
// 测试用例构建链表...
}
}
```
这段代码实现了同样的功能,在 Java 环境下运行[^2]。
---
#### C++ 实现代码
```cpp
#include <iostream>
#include <vector>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
vector<int> linkedListToArray(ListNode* head) {
vector<int> result; // 定义一个向量容器
ListNode* current = head; // 设置当前指针指向链表首部
while (current != nullptr) { // 进行循环直至到达链表末端
result.push_back(current->val); // 插入当前节点的数据至向量末尾
current = current->next; // 转移到下一个节点
}
return result; // 返回填充好的向量
}
int main() {
// 构建测试链表...
return 0;
}
```
这是基于 C++ 的解决方案,同样遵循了相同的逻辑思路[^3]。
---
### 性能分析
以上三种语言的实现均采用线性时间复杂度 O(n) 来处理输入链表,并且空间复杂度也为 O(n),这是因为我们需要额外的空间来保存所有的节点值。
---
阅读全文
相关推荐


















