如何在C中更新全局链表?

如何在C中更新全局链表?,c,C,我有一个名为ACCOUNT的结构,它有两个属性和一个指向下一个属性的指针。全局标头由NULL启动。我想更新全局列表,但由于我多次调用该函数,head仍然为NULL。如何修复它 包括 包括 包括 结构帐户{ 国际帐户号码; 浮动天平; 结构帐户*下一步; } 结构账户*head=NULL; 作废findUpdateint帐户,浮动金额{ 结构账户*活期; 电流=水头; whilecurrent!=NULL{ 如果当前->帐户编号==帐户{ 当前->余额+=金额; } 当前=当前->下一步; }

我有一个名为ACCOUNT的结构,它有两个属性和一个指向下一个属性的指针。全局标头由NULL启动。我想更新全局列表,但由于我多次调用该函数,head仍然为NULL。如何修复它

包括 包括 包括 结构帐户{ 国际帐户号码; 浮动天平; 结构帐户*下一步; } 结构账户*head=NULL; 作废findUpdateint帐户,浮动金额{ 结构账户*活期; 电流=水头; whilecurrent!=NULL{ 如果当前->帐户编号==帐户{ 当前->余额+=金额; } 当前=当前->下一步; } 当前=结构帐户*mallocsizeofstruct帐户; 当前->账号=账号; 当前->余额=金额; }
您需要将findUpdate末尾分配的新条目链接到列表中。我建议将findUpdate改写为:


请修复给定的代码示例,使其可读。您需要在while循环中返回,并在分配当前代码后更新head。不要在c@LegendofPedro中使用malloc返回的指针。很抱歉,我没有理解,请您解释更多细节,谢谢!我刚刚尝试过,但在这种情况下,列表中出现了多个具有相同accountNumber的节点,我只希望存在一个具有更新余额的节点,如何处理它?这是通过在列表的开头添加新元素来构建列表。分配第一个元素时head为空,因此当前->下一步=head;将列表第一个元素的下一个指针设置为NULL,head=current;将头设置为指向分配的第一个元素。分配下一个元素时,当前->下一个=头;将新元素的下一个指针设置为指向head指向的第一个元素,head=当前;将头设置为指向新的第二个元素。对于添加的每个元素,依此类推。
void findUpdate(int account, float amount)
  {
  struct ACCOUNT *current;

  for(current = head ; current != NULL ; current = current->next)
    {
    if(current->accountNumber == account)
      {
      current->balance += amount;
      break;
      }
    }

  if(current == NULL)
    {
    current = malloc(sizeof(struct ACCOUNT));
    current->accountNumber = account;
    current->balance = amount;
    current->next = head;
    head = current;
    }
  }