繁体   English   中英

在链表中创建多个节点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM