举例链表存入到文件怎么进行查找
时间: 2024-01-01 10:03:28 浏览: 79
链表的基本操作:插入、删除、查找。c++语言实现
4星 · 用户满意度95%
好的,我来举一个简单的例子:
假设有如下链表:
```
struct Node {
int data;
Node* next;
};
Node* head = nullptr;
Node* tail = nullptr;
// 添加节点
void addNode(int data) {
Node* newNode = new Node();
newNode->data = data;
newNode->next = nullptr;
if (tail == nullptr) {
head = tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
```
现在我们将这个链表存储到文件中,可以使用以下代码:
```
void saveListToFile(const std::string& filename) {
std::ofstream file(filename, std::ios::binary);
if (!file) {
std::cerr << "Failed to open file for writing: " << filename << std::endl;
return;
}
Node* node = head;
while (node != nullptr) {
file.write(reinterpret_cast<char*>(&node->data), sizeof(int));
node = node->next;
}
file.close();
}
```
这里使用 C++ 的文件流将链表数据写入文件。注意,我们使用了二进制模式打开文件,这样可以确保数据能够正确地写入和读取。
现在我们要从文件中查找某个数据,可以使用以下代码:
```
Node* findNode(int data) {
std::ifstream file("list.bin", std::ios::binary);
if (!file) {
std::cerr << "Failed to open file for reading: list.bin" << std::endl;
return nullptr;
}
Node* node = head;
int value;
while (file.read(reinterpret_cast<char*>(&value), sizeof(int))) {
if (value == data) {
return node;
}
node = node->next;
}
file.close();
return nullptr;
}
```
这里我们打开文件,从中读取数据,并遍历链表进行比较。如果找到了相等的节点,则返回该节点;否则返回 nullptr。
阅读全文