帮我写一个C++代码创建了一个链表要用一个函数初始化并且用主函数调用这个函数使用
时间: 2024-09-15 22:08:26 浏览: 44
在C++中,我们可以使用结构体(struct)和指针来创建一个简单的单向链表,并提供一个函数来进行初始化。这里是一个基础的示例:
```cpp
#include <iostream>
// 定义链表节点结构
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
// 初始化链表的函数
Node* createLinkedList(int n) {
Node* head = new Node(); // 创建头节点
if (head == nullptr) {
std::cerr << "Memory allocation failed!\n";
return nullptr;
}
head->data = 0; // 根据需要设置初始值,这里是0
Node* current = head;
for (int i = 1; i < n; ++i) {
Node* newNode = new Node();
if (newNode == nullptr) {
std::cerr << "Memory allocation failed!\n";
break;
}
newNode->data = i;
newNode->next = current->next;
current->next = newNode;
current = newNode;
}
return head;
}
// 主函数调用链表初始化函数并打印链表
int main() {
int size;
std::cout << "Enter the number of elements: ";
std::cin >> size;
Node* list = createLinkedList(size);
if (list != nullptr) {
std::cout << "Linked List created successfully.\n";
printList(list); // 自定义一个打印链表的辅助函数
} else {
std::cout << "Cannot print an empty or invalid list.\n";
}
// 清理内存
delete list; // 如果链表不是空的,在main函数结束前记得删除它
return 0;
}
// 打印链表的辅助函数
void printList(Node* node) {
while (node != nullptr) {
std::cout << node->data << " -> ";
node = node->next;
}
std::cout << "nullptr" << std::endl;
}
```
在这个例子中,`createLinkedList`函数接受一个整数参数`n`,创建一个包含`n`个节点的链表。主函数会获取用户输入,然后调用`createLinkedList`来生成链表,最后打印链表内容。
注意:在实际项目中,为了防止内存泄漏,你应该考虑使用智能指针(如`std::unique_ptr`或`std::shared_ptr`)来管理链表节点。但在简单示例里,我们直接使用了手动管理内存的方式。
阅读全文