当前位置: 首页 > 知识库问答 >
问题:

C函数连接两个链表时的分段错误

酆君墨
2023-03-14
Node *concat(Node *list1, Node *list2) {
  Node *head, *ptr;
  if (list1==NULL) {
    if (list2!=NULL)
      return copy(list2); 
/*copy refers to a function that copies a list & returns pointer to new list*/
    else
      return NULL;
  }
  else if (list2==NULL) {
    if (list1!=NULL)
      return copy(list1);
    else
      return NULL;
  }
  else {
  while (list1 != NULL) {
    if (head==NULL) {
      head=newNode(list1->airport);
      ptr=head;
    }
    else {
      Node *n=newNode(list1->airport);
      ptr->next=n;
      ptr=ptr->next;
    }
    list1=list1->next; }
  while (list2 != NULL) {
    Node *n1=newNode(list2->airport);
    ptr->next=n1;
    ptr=ptr->next;
    list2=list2->next;
  }
  }
  return head;
}
    null

共有1个答案

夏侯宏旷
2023-03-14

由于您已经有了一个复制函数,它创建新的列表并返回头点,所以程序可以如下所示修改(如果NULL输入传递给复制函数,它应该返回NULL,这是假设)

节点*concat(节点*列表1,节点*列表2){

   Node *head = NULL, *ptr = NULL;

   if(list1 != NULL)
   {

      head = copy(list1);
   }

   if(list2 != NULL)
   {
      if(NULL == head)
      {
        return copy(list2);
      }
   }

   ptr = head;

   while(ptr->next != NULL)
   {
      ptr = ptr->next;
   }

   ptr->next = copy(list2);
   return head;

}

 类似资料:
  • 我有一个家庭作业要写“先到先得”和“循环模拟”并比较它们。我开始创建一个链表来制作事件列表。我制作了插入和打印列表函数,但无法使其工作。我的朋友告诉我使用双链表,所以我重新创建了链表,并试图使插入函数工作。我修复了大部分问题,但现在找不到插入函数的错误。当我比较是否插入指针数据和当前指针数据时,While循环语句出现分段错误。我已经阅读了我的C语言书,书中的代码与我的代码相似,并且还通过了双链表分

  • 我正在实现一个类似于队列的双链接列表。因此,当我向列表中添加节点(例如5个节点)并清空列表并尝试向列表中添加新节点时,会出现分段错误(核心转储)。我不知道它为什么这么做。你能解释一下吗?

  • 我正在开发一个基于SAAS的站点,我必须将两个DBs中的两个表连接起来,比如说DB1中的table1和DB2中的table2。我必须使用cakephp中的join从表1和表2获取匹配记录,但它会抛出如下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT命令拒绝用户'dbname'@'localhost'访问表'table_name'。 有谁能解释一下如何使用c

  • 问题内容: 我有两个表,如下所示: 我想列出参加活动17的所有人(包括学生和教师)的名字。无论如何,我可以获得以下结果: 无需创建新表(仅使用表达式或派生关系的嵌套)? 在actid上加入JOIN会得到如下结果: 我想我需要一种串联形式? 问题答案: 您可能(或可能不需要)对ID不唯一的内容进行处理,例如

  • 我试图加入2 KTables。 合并功能非常简单,我只是将值从一个bean复制到另一个bean。 但由于某些原因,join函数在单个生成的记录上调用了两次。请参阅下面的流媒体/制作人配置 生产者配置- 接下来,我将提交每个流的单个记录。两个记录具有相同的密钥。我希望收到一条记录作为输出。 但是ValueJoiner触发了2次,我得到了2条相同的输出记录,而不是一条。在触发时间内-两个流中的值都存在

  • 我认为我的模板使用不当,但我不知道我做错了什么。这就像模板链表无法确定它需要使用我的术语类一样。 名单- 以下是Visual Studio 2012的确切错误: > 错误LNK1120:1未解决的外部C:\用户\迈克尔\文档\魔术公文包\尚普兰\课程工作\数据结构\pa2\调试\pa2.exe 标题。H 功能。cpp 链接列表。H 术语h