2016-09-20 71 views
-1

列出我需要以下問題的理解:搜索鏈接從文件

給定一個鏈表

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

(編輯注:好了,與編輯的問題,這更像是一個評論,而不是真正回答這個問題,但我會離開這裏反正...)

你或許應該使用union而不是一個空指針:

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; 
}