C语言 从文件中搜索链表



我需要了解以下问题:

给定一个链表

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),检查列表中是否存在某个value,并返回找到该值的文件名指针。

文件包含一个以上的列表。当从文件中读取列表时,重写指针next,并从现有列表中输入flag

问题:如何从列表中重写指针next和类型flag ?

如何使用枚举类型flag来搜索文件?

(编辑注:好吧,有了编辑过的问题,这更像是一个评论,而不是对问题的实际回答,但我还是把它留在这里…)

你应该使用联合而不是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;
}

相关内容

  • 没有找到相关文章