我正在研究一个涉及创建超市库存库存的问题,而且我遇到了相当大的困难。该程序应该做的是提示用户输入(项目名称,数量,重量和价格),然后将此项目添加到排序(按字母顺序增加)数据库。
所以我的想法是创建一个链表。我首先定义了以下内容:
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);
}
}
到目前为止这是正确的吗?
现在,我不太确定在创建新节点时如何处理指针*,我也不知道如何更改结构的字段。我可以简单地使用new_node.item = 'string'
还是我还需要malloc字段名称?
对不起,这可能是一个愚蠢的问题,但我真的需要有人指出我正确的方向。
答案 0 :(得分:0)
您需要一个全局根指针(item.next == NULL
)并使用{{1}}初始化它,这是列表的开头。对于单链接列表,将新元素的下一个指针指向root指向的元素,并将root更改为指向新创建的元素。
通过这样做,您可以创建菊花链元素。 {{1}}时会到达终点。