不用类来写一个链表模板
时间: 2024-03-13 13:22:19 浏览: 17
以下是一个简单的链表模板,不使用类来实现:
```cpp
#include <iostream>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* createList(int arr[], int n) {
if (n == 0) {
return nullptr;
}
ListNode* head = new ListNode(arr[0]);
ListNode* cur = head;
for (int i = 1; i < n; i++) {
cur->next = new ListNode(arr[i]);
cur = cur->next;
}
return head;
}
void printList(ListNode* head) {
ListNode* cur = head;
while (cur != nullptr) {
std::cout << cur->val << " ";
cur = cur->next;
}
std::cout << std::endl;
}
void deleteList(ListNode* head) {
while (head != nullptr) {
ListNode* next = head->next;
delete head;
head = next;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
ListNode* head = createList(arr, 5);
printList(head);
deleteList(head);
return 0;
}
```
该模板包含三个函数:
- `createList`:根据输入数组创建链表。
- `printList`:遍历链表并输出每个节点的值。
- `deleteList`:释放链表的内存。
在 `createList` 函数中,我们首先判断数组是否为空。如果是,则返回空指针。否则,我们创建一个头节点,将第一个数组元素的值存储在头节点中,并将指向下一个节点的指针设置为 `nullptr`。接下来,我们遍历数组中的剩余元素,并为每个元素创建一个新节点。我们将新节点添加到链表的末尾,并将当前指针移动到新节点。
在 `printList` 函数中,我们遍历链表并输出每个节点的值。我们从头节点开始,然后遍历每个节点,并输出当前节点的值。
在 `deleteList` 函数中,我们遍历链表并释放每个节点的内存。我们首先保存下一个节点的指针,以便我们可以继续遍历链表。然后,我们释放当前节点的内存,并将当前指针移动到下一个节点。我们重复这个过程,直到遍历完整个链表。