将列表添加到C中已存在的列表中

时间:2014-03-07 01:47:12

标签: c linked-list

我正在尝试复制现有列表,然后将它们连接在一起。我使用了copy函数,它返回一个指向新列表的指针。我很难将第一个列表的最后一个指针指向另一个列表中的第一个节点。

Node *concatenates(Node *list1, Node *list2) {
    Node *n5;
    Node *n2;
    n5=copy(list1);
    n2=copy(list2);
    while(n5!=NULL)
      n5=n5->next;
    n5->next=n2; /* having trouble with this part */
    return n5;
 }

1 个答案:

答案 0 :(得分:0)

这里有一些问题。我将解决你的段错误:

while(n5!=NULL)
  n5=n5->next;
n5->next=n2

在while循环之后,n5保证为NULL,因此n5->next未定义并将产生seg错误。这个while循环将阻止seg错误(但仍然无法工作):

while(n5->next!=NULL)
  n5=n5->next;
n5->next=n2

你的另一个明显的问题是,你正在抓住list1的头,将其放入n5,然后用while循环抛出整个列表,直到n5为尾{列表。您需要解决这个问题,否则您将无法返回您期望的内容。