我在本地驱动器上保存了一个.txt文件,该文件由3列和许多行组成,第一列是字符,第二列是数字,第三列是日期。我如何使用链表(不使用STL)编写程序来存储该文件,然后能够通过让用户从第一列输入信息来搜索特定条目,以便计算机将从表中找到它并在该行中显示信息?
一种简单的方法是使用如下结构:
struct Row
{
char * name;
int id;
time_t date;
Row * next;
};
Row * table = NULL;
该结构将存储.txt文件的一行和指向下一行的指针。这使它成为一个链表。table
变量将指向列表的头部-第一行。
要存储列表,您将遍历表并使用fprintf
将每一行写入新行。
for (Row * row = table; row != NULL; row = row->next)
fprintf(file, "%s %i %i", row->name, row->id, row->date);
要在列表中搜索,您将遍历表并将目标字符串与每行(或无论您如何称呼它)的name
成员进行比较。使用链表,你基本上只能进行顺序搜索。
for (Row * row = table; row != NULL; row = row->next)
if (0 == stcmp(row->name, targetString))
return row;
我假定您已经在课堂上介绍了用户输入和基本列表算法。
您可以在c++中复习以下概念,然后解决您的问题
- 文件处理
- 链表:此维基百科条目及其外部链接将帮助您了解链表的基本操作。
- 搜索:您可以实现您选择的搜索算法来查找所需的信息。像线性搜索这样的基本搜索算法就足够了。整合这些概念,解决您的问题!
你可以使用Don Reba的结构来实现链表的节点