[英]Creating multiple nodes in a linked list
我正在尝试制作一个 function 来保存输入到给定链表(加号和镜头)的各种元素中的值,然后显示结果(id)。 我只能输入、保存和显示一次,但是当我退出 function 或尝试输入另一组值时,它只显示最近的一个。 在 main.c 文件中提示用户 select 是写东西还是退出程序。 我想我只创建一个节点,但不知道如何修复它。 由于条目的数量是未知的,我不能只硬编码我想要的数据集(或节点)的数量。 我的代码如下:
header function 内:
typedef struct nodetreat{
int id;
char user[51];
char text[141];
struct nodetreat *next;
}treat;
在 main.c 内:
int num = 0;
scanf("%d", &num);
if(num== 1) {
treatmaker(treatList);
}
在 function(治疗师)内:
treat *treatmaker(treat *treatList) {
int i;
int plus= 0;
int lens = 0;
struct nodetreat *new_node;
new_node = malloc(sizeof(struct nodetreat));
printf("Enter a name: ");
fgets(new_node->user, 51, stdin);
printf("Enter the text: ");
fgets(new_node->text, 141, stdin);
for(i = 0; i < strlen(new_node->user) - 1; i++) {
plus += new_node->user[i];
}
lens= strlen(new_node->text) - 1;
new_node->id = plus + lens;
printf("id is %d.\n", new_node->id);
}
所以我的问题是,我该怎么做才能让我的链表可以容纳多个 id 或节点?
您需要在 function treatmaker
new_node->next
设置为nodetreat
,然后最后返回new_node
。
treat *treatmaker(treat *treatList)
{
// do something here...
now_node->next = treatList;
return new_node;
}
在您的main.c
文件中,您必须使用返回的new_node
treatList
treatList = treatmaker(treatlist);
顺便说一句,我建议像这样为new_node
分配 memory :
new_node = malloc(sizeof *new_node);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.