简体   繁体   English

结构中带有指针变量的链表

[英]linked list with pointer variables in struct

I am experiencing problems on linked list with pointer variables inside the struct.我在结构内部带有指针变量的链表上遇到问题。 Everytime when i insert a new visitor data, the previous visitors data will all be changed to the most current visitor data.每次插入新的访客数据时,以前的访客数据都会更改为最新的访客数据。

    struct visitData{
    char *SrNo;
    char *ticketNo;
    char *Name;
    char *ID;
    };

   typedef struct ticket {
   struct visitData visitor;
   struct ticket *nextPtr;
   }tick;

   tick *addinfo(tick *previous,char* serial,char* ticketno,char* name,char* id)
   {

    tick *info = malloc(sizeof(tick));
    info->nextPtr = NULL;
    info->visitor.SrNo =serial;
    info->visitor.ticketNo = ticketno;
    info->visitor.Name = name;
    info->visitor.ID=id;

    if (previous != NULL)
    {
    previous->nextPtr = info;
    }


printf("visitor info has been added: %s %s %s %s",info->visitor.SrNo,info->visitor.ticketNo,info->visitor.Name,info->visitor.ID);

return info;

} }

This should work:这应该工作:

#include <string.h>

tick *addinfo(tick *previous,char* serial,char* ticketno,char* name,char* id)
{

  tick *info = malloc(sizeof(tick));
  info->nextPtr = NULL;
  info->visitor.SrNo = strdup(serial);
  info->visitor.ticketNo = strdup(ticketno);
  info->visitor.Name = strdup(name);
  info->visitor.ID=strdup(id);

  if (previous != NULL)
  {
    previous->nextPtr = info;
  }


  printf("visitor info has been added: %s %s %s %s \n",info->visitor.SrNo,info->visitor.ticketNo,info->visitor.Name,info->visitor.ID);

  return info;
}

The problem was that you weren't allocating memory for your data.问题是您没有为数据分配内存。 Also, be sure to free it when the program ends.另外,一定要在程序结束时释放它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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