我需要了解以下问题:
给定一个链表
typedef struct
{
int i;
void * next;
flag fg;
}node;
其中 flag
是枚举
typedef enum
{
in_file,
in_memory
}flag;
其中 in_file
表示列表节点在文件中,in_memory
该列表节点不在文件中(next
指向字符串(文件名)。
给定一个函数node* loadList(char* file_name)
,它从文件中读取列表并返回第一个列表节点。
编写一个函数char*exists(node*list,int value,int*isInList)
来检查列表中是否存在某个值
并返回该值的指针在其中找到该值的文件名。
文件包含多个列表。
从文件读取列表时,重写指针 next
并从现有列表中键入 flag
。
问题:如何重写指针next
并从列表中输入flag
?
如何使用枚举类型flag
来搜索文件?
最佳答案
(编辑说明:好的,对于编辑后的问题,这更像是评论,而不是对问题的实际回答,但无论如何我都会将其留在这里......)
您可能应该使用 union 而不是 void 指针:
struct list_node
{
int i;
union {
struct list_node *node;
const char *filename;
} next;
flag fg;
} ;
然后你会得到类似的代码
switch(node->fg)
case in_memory:
....node->next.node->.....;
break;
case in_file:
....node->next.filename....;
break;
}
关于c - 从文件中搜索链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601178/