将字符串插入链表结构

时间:2015-03-18 18:00:24

标签: c

我正在尝试动态地将字符串添加到链接列表中。 (我不知道会有多少串)。

到目前为止,我的代码是我发现的:

struct node
{
int data;
struct node *next;
}*start=NULL;
//------------------------------------------------------------

void creat()
{
char ch;
 do
 {
  struct node *new_node,*current;

  new_node=(struct node *)malloc(sizeof(struct node));

  printf("nEnter the data : ");
  scanf("%d",&new_node->data);
  new_node->next=NULL;

  if(start==NULL)
  {
  start=new_node;
  current=new_node;
  }
  else
  {
  current->next=new_node;
  current=new_node;
  }

 printf("nDo you want to creat another : ");
 ch=getche();
 }while(ch!='n');
}
//------------------------------------------------------------------

void display()
{
struct node *new_node;
 printf("The Linked List : n");
 new_node=start;
 while(new_node!=NULL)
   {
   printf("%d--->",new_node->data);
   new_node=new_node->next;
   }
  printf("NULL");
}

如果我想在链表结构中添加字符串,我只会更改:

    struct node {
      int data;

为:

  struct node {
    char abc[256];

并将所有%d更改为%s?这很简单吗?

1 个答案:

答案 0 :(得分:0)

呀!它也会奏效。但更好的方法是保留一个临时缓冲区,用于存储字符串输入。现在每当你得到一个字符串时,只需动态分配(使用malloc())该数字字符+ 1个字符到该指针。并使用strcpy()将缓冲的输入复制到它。请查看此代码段。

struct struct_name
{
   char *data;
    ....
};
char buffer[MAXBUFFERSIZE];
scanf("%s",buffer);
struct struct_name * temp= (struct struct_name*) malloc(sizeof(char)*(strlen(buffer)+1));
if(temp==NULL)
{
    //error.
}
strcpy(temp->data,buffer);
.....