针对带附加头结点的单链表,用c++试编写下列函数建立函数 create:根据一维数组a[n]建立一个单链表,使单链表中各元素 的次序与a[n]中各元素的次序相同,要求该程序的时间复杂性为O(n)
时间: 2024-09-20 22:02:07 浏览: 43
贪吃蛇_C语言动态建立二位数组_likebis_贪吃蛇_easyx贪吃蛇_
5星 · 资源好评率100%
为了实现C++中根据一维数组`a[n]`建立带附加头结点的单链表,我们首先需要定义链表结构以及相关的辅助函数。以下是创建链表所需的步骤:
1. **定义链表节点**:
```cpp
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 构造函数
};
```
2. **创建函数create**:
```cpp
ListNode* create(int arr[], int n) {
if (n == 0) return nullptr;
// 创建头节点
ListNode* head = new ListNode(arr[0]);
ListNode* current = head;
// 遍历数组,添加节点
for (int i = 1; i < n; ++i) {
current->next = new ListNode(arr[i]); // 插入节点
current = current->next;
}
return head;
}
```
这个函数的时间复杂度为O(n),因为它只遍历了一次输入数组。
阅读全文