【问题标题】:Struggling to form a linked list努力形成一个链表
【发布时间】:2015-05-12 06:50:40
【问题描述】:

我正在处理一个涉及创建超市库存清单的问题,我遇到了相当大的困难。程序应该做的是提示用户输入(项目名称、数量、重量和价格),然后将此项目添加到排序(按字母顺序增加)的数据库中。

所以我的想法是创建一个链表。我首先定义了以下内容:

typedef struct item_t item;
struct item_t{
    char name;
    int weight;
    int price;
    int quantity;
    item *next;
};

所以我的想法是,每个项目的详细信息都存储在这种结构类型中,并且 *next 将指向链表中的下一个结构。

接下来我想出了这个:

void add_new_node_at_end(char *user_input){
    new_node = (*item_t)malloc(sizeof(item_t))
    if (new_node == NULL){
        printf("Memory failure");
        exit(EXIT_FAILURE);
    }
}

到目前为止这是正确的吗?

现在,当我创建一个新节点时,我不太确定如何处理指针 *next,我也不知道如何更改结构的字段。我可以简单地使用new_node.item = 'string' 还是我还需要 malloc 字段名称?

抱歉,这可能是一个愚蠢的问题,但我真的需要有人指出我正确的方向。

【问题讨论】:

  • “我也不知道如何更改结构的字段” - 直到您知道如何在结构中正确设置基本数据,单间接指针是如何用在 C 语言中,基本的动态内存管理,你会遇到一堵墙。你问了方向,所以......:了解那些首先

标签: c data-structures struct linked-list


【解决方案1】:

您需要一个全局根指针 (item_t* root) 并将其初始化为 NULL,这是您列表的开头。对于单链表,将新元素的next指针指向root指向的元素,将root改为指向新创建的元素。

通过这样做,您可以创建元素的菊花链。当item.next == NULL 时到达终点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多