c++ 写一个把数组转化成链表的函效 讲效组{1.2.3.4}转化成链表1->2->3->4 a2list([1,2,3,4})
时间: 2024-10-19 20:04:45 浏览: 19
实现一个模板类的链表(c++)
在C++中,我们可以创建一个简单的双向链表结构,并使用迭代的方式来将数组转换为链表。这里是一个基本的实现示例:
```cpp
#include <iostream>
using namespace std;
// 定义双向链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode* prev;
ListNode(int x) : val(x), next(nullptr), prev(nullptr) {}
};
// 将数组转换为链表的函数
ListNode* arrayToLinkedList(vector<int>& arr) {
if (arr.empty()) return nullptr;
// 创建头结点
ListNode* head = new ListNode(arr[0]);
ListNode* tail = head;
for (size_t i = 1; i < arr.size(); ++i) {
// 创建新的节点并链接到链表尾部
ListNode* node = new ListNode(arr[i]);
tail->next = node;
node->prev = tail;
tail = node;
}
return head;
}
int main() {
vector<int> arr = {1, 2, 3, 4};
ListNode* listHead = arrayToLinkedList(arr);
// 打印链表
ListNode* temp = listHead;
while (temp != nullptr) {
cout << temp->val << " -> ";
temp = temp->next;
}
cout << "nullptr" << endl;
// 清理内存
while (listHead != nullptr) {
ListNode* tempNext = listHead->next;
delete listHead;
listHead = tempNext;
}
return 0;
}
```
这个程序首先检查数组是否为空,然后依次遍历数组元素,为每个元素创建一个新的链表节点,并将其连接到链表的尾部。最后在`main`函数中打印出链表并清理动态分配的内存。
阅读全文