Frankjunyu 2015-10-28 06:37 采纳率: 58.8%
浏览 1540
已采纳

一段输出两个list不同之处的代码,求大神解释

为什么代码中既有head,也有tail,他们两个是什么关系,各起到什么作用?求大神解释

Lnode * difference( Lnode *list1, Lnode *list2 )
{
Lnode *head = NULL;
Lnode *tail = NULL;
Lnode *new_node;
Lnode *copy_node;

// walk through both lists, adding nodes as necessary
while ( list1 != NULL || list2 != NULL ) {
  copy_node = NULL;
  if (   list1 != NULL && list2 != NULL
      && list1->data == list2->data ) {
    list1 = list1->next; // skip common nodes
    list2 = list2->next;
  }
  else if (    list1 != NULL
           &&( list2 == NULL || list1->data < list2->data )) {
    copy_node = list1;
    list1 = list1->next;
  }
  else if (    list2 != NULL
           &&( list1 == NULL || list2->data < list1->data )) {
    copy_node = list2;
    list2 = list2->next;
  }
  if( copy_node != NULL ) {
    new_node = (Lnode *)malloc(sizeof(Lnode));
    new_node->data = copy_node->data;
    if( head == NULL ) {
      head = new_node;
    }
    else {
      tail->next = new_node;
    }
    tail = new_node;
  }
}
return head;

}

  • 写回答

1条回答 默认 最新

  • 关注

    head是头节点,找到第一个不同的节点时,head指向它,即这个节点就是新产生的链表(2个链表的不同节点组成)的头节点
    tail,是用来在链表尾插入新节点的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程