搜索文件

时间:2016-09-20 18:22:01

标签: c enums linked-list file-handling

我需要了解以下问题:

给出一个链表

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来搜索文件?

1 个答案:

答案 0 :(得分:1)

(编辑注释:好的,对于编辑过的问题,这更像是评论而不是实际回答问题,但无论如何我都会留在这里......)

你应该使用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;
}