C++读取txt文件且头节点不存数据的单链表
时间: 2023-09-03 13:16:43 浏览: 35
好的,您可以参考以下代码实现:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
struct Node {
int data;
Node* next;
};
Node* createLinkedList() {
Node* head = new Node;
head->next = NULL;
return head;
}
void insertNode(Node* head, int data) {
Node* p = new Node;
p->data = data;
p->next = head->next;
head->next = p;
}
void readTxtFile(Node* head, string filename) {
ifstream infile;
infile.open(filename.c_str());
if (!infile) {
cout << "Error opening file!" << endl;
return;
}
int data;
while (infile >> data) {
insertNode(head, data);
}
infile.close();
}
void printLinkedList(Node* head) {
Node* p = head->next;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
Node* head = createLinkedList();
string filename = "data.txt";
readTxtFile(head, filename);
printLinkedList(head);
return 0;
}
```
在这个代码中,我们首先定义了一个 `Node` 结构体来表示单链表的节点,包含一个整数数据域和一个指向下一个节点的指针域。然后我们定义了一个 `createLinkedList` 函数来创建一个空的单链表,头节点不存储数据。接着我们定义了一个 `insertNode` 函数来向单链表中插入一个新节点。这里我们采用头插法插入新节点,即新节点插入在头节点之后。
接着我们定义了一个 `readTxtFile` 函数来读取文本文件中的数据并存储到单链表中。这里我们使用 `ifstream` 类来打开文本文件,并使用 `>>` 运算符从文件中读取数据。每读取一个数据,就调用 `insertNode` 函数将其插入到单链表中。最后我们记得关闭文件流。
最后我们定义了一个 `printLinkedList` 函数来输出单链表中存储的数据,便于我们验证读取和存储的正确性。
在 `main` 函数中,我们首先调用 `createLinkedList` 创建一个空的单链表,然后指定文件名,调用 `readTxtFile` 函数读取文本文件中的数据并存储到单链表中,最后调用 `printLinkedList` 函数输出单链表中存储的数据。