从预制文件制作链表

Making a linked list from a premade file

本文关键字:链表 文件      更新时间:2023-10-16

我正在尝试从 c++ 的预制文件制作链表。我正在努力解决从文件中获取信息并使用它来制作列表的概念。 这就是我目前所拥有的。我还需要能够从列表中的任意位置插入和删除节点。

struct node
{
string name;
int id;
float gpa;
node *next;
};
struct node* head;
void insertNodes(short id)
{
struct node* new_node = (struct node*) malloc(sizeof(struct node));
new_node->id = id;
new_node->next = head;
head = new_node;
}
void deleteNode() {
if (head == NULL){
cout << "List is empty" << endl;
return;
}
cout << head->id << " is removed." << endl;
head = head ->next;
}
int main() {
head = NULL;
node entry;
fstream datafile;
datafile.open("datafile.dat", ios::in | ios::binary);
if (!datafile)
{
cout << "Error!!n";
return 0;
}
datafile.read(reinterpret_cast<char *>(&entry), sizeof(entry)); 
}

如果你在C++中这样做,你不应该使用mallocfree,以及每个struc实例之前的struct关键字;这些都是C主义的。 您可能应该创建一个自己的类来表示列表,并使用成员函数而不是全局变量head,并使用newdelete来动态实例化和销毁变量。 仍然有malloc的情况,但这似乎不是其中之一。

此外,您的 INSERT 函数似乎只接受一个输入值并将其添加到列表的尾部;通常在列表中,您将希望获取插入点和值,除非您调用方法"pushback"或类似的东西。

此外,除非您重写以创建自己的List类,否则您目前尚未进行任何面向对象的编程,因为您只是在程序上做事,而关于此代码的唯一 c++ 就是使用iostreamfstream

建议你把node也做成一个类。 它主要是语义上的,但会让你养成习惯,即使你不想做访问器,也会给 node 一个构造函数。

除此之外,您是在询问信息而没有尝试任何事情,而且您的问题太宽泛了。