c++定义单链表结构体,以输入结束
时间: 2024-09-09 08:14:51 浏览: 64
在C++中定义单链表结构体,首先需要定义链表节点的结构体,然后定义整个单链表的结构体。链表节点通常包含数据域和指向下一个节点的指针域。下面是一个简单的单链表节点结构体的定义以及单链表的示例代码:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int data; // 数据域,用于存储节点数据
ListNode* next; // 指针域,指向下一个节点
};
// 定义单链表结构体
class SingleLinkedList {
public:
SingleLinkedList() : head(nullptr) {} // 构造函数,初始化头节点为nullptr
~SingleLinkedList() {
ListNode* current = head;
ListNode* next;
// 析构函数,释放链表内存
while (current != nullptr) {
next = current->next;
delete current;
current = next;
}
}
// 向链表末尾添加元素的函数
void append(int value) {
ListNode* newNode = new ListNode{value, nullptr};
if (head == nullptr) {
head = newNode;
} else {
ListNode* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 打印链表元素的函数
void print() {
ListNode* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
// 静态成员函数,用于创建链表实例并插入数据直到输入结束
static SingleLinkedList createListFromInput() {
SingleLinkedList list;
int value;
std::cin >> value;
while (value != -1) { // 假设输入-1时结束
list.append(value);
std::cin >> value;
}
return list;
}
private:
ListNode* head; // 链表的头指针
};
int main() {
std::cout << "请输入链表元素,以-1结束:" << std::endl;
SingleLinkedList list = SingleLinkedList::createListFromInput();
list.print();
return 0;
}
```
这段代码定义了一个单链表,并通过`createListFromInput`静态成员函数从标准输入接收数据,直到输入-1时结束输入,并创建链表实例。
阅读全文