c - 从文件中搜索链接列表

标签 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*e​​xists(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/

相关文章:

c - 如何检查非阻塞套接字客户端中的数据

c - 打印问题

c - 如果输入的总数不是 8,则退出 1

java - java中如何从Enum中获取值

C 段错误 : 11 error

objective-c - 在 Kotlin 中使用 Objective-C typedefs 快速枚举

scala - Scala 和 Slick 上的枚举之间的映射

c++ - 遍历链表

java - 将私有(private)类用于链表的正确方法

c++ - 带有 2 个列表的面向对象