尝试插入节点而不是重复值

时间:2015-04-02 17:51:55

标签: data-structures struct linked-list nodes

我正在尝试将节点添加到链接列表的开头。该程序要求用户输入他想要输入的名字的数量,所以如果我放3,它应该问我3个不同的名字并在列表中显示它们,而是程序重复打印相同的名称。

    struct node{

      char data[20];
      struct node* link;

    }Damn;


    struct node* head;

    //Insert
    void Insert(char p[20]){

      struct node* temp = (struct node*) malloc(sizeof(struct node));
      strncpy(Damn.data, p);
      temp->link = head;
      head = temp;
    }

   //Print
    void Print()
    {
      struct node* temp = head;
      while(temp != NULL){
        printf(" %s \n", Damn.data );
        temp = temp->link;
      }
    }


    //Main
    int main(){

      head = NULL;

      int i, n;
      char p[20];

      printf("How many names you want to enter\n");
      scanf("%d", &n);

      for(i=1; i<(n+1); i++){
        printf("Enter the %dth  name", i);
        scanf("%s", p);
        Insert(p);
        Print();
      }

1 个答案:

答案 0 :(得分:0)

而不是Damn.datatemp->data。另外,strncpy()有三个参数。您应该添加要复制的最大字符数作为第三个参数。