首页 > 解决方案 > 如何用这个结构作为数据创建一个链表?

问题描述

我正在尝试打印出一个表格,即周期表中的前十个元素作为链接列表,其中结构作为数据。该结构保存元素的数据,如下所示:

typedef struct element{
    char *name;
    char *symbol;
    float weight; 
}element;

然后像这样创建列表本身:

typedef struct list{
    struct element elements[]; //an array holding element types?
    struct list *next; 
}list;

所以因为我需要打印出前 10 个元素,所以我尝试使用数组来声明名称、符号和权重,但我无法连接在链表中使用哪种方式作为数据:

char *names[10] = {"Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon"};
char *symbols[10] = {"H","He","Li","Be","B","C","N","O","F","Ne"};
float weights[10] = {1.008,4.003,6.941,9.012,10.811,12.011,14.007,15.999,18.998,20.180};

标签: arrayscliststruct

解决方案


链表具有元素数组是不寻常的,尽管在某些情况下它可能很有用。在您的情况下,我认为每个列表元素都有一个元素的链表更合适:

typedef struct list{
    struct element element;
    struct list *next; 
}list;

作为风格问题,我们最终element使用结构名称中使用的名称,作为 typedef 的名称和结构成员。我建议将它们重命名为struct ELEMENTand tElement。与列表结构相同。这将使它像:

typedef struct ELEMENT {
    char *name;
    char *symbol;
    float weight; 
} tElement;

typedef struct LIST {
    tElement element;
    struct LIST *next; 
} tList;

我把它留给你来开发创建和添加到列表以及打印它的功能。


推荐阅读