问题描述
- 一段输出两个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;
}
解决方案
head是头节点,找到第一个不同的节点时,head指向它,即这个节点就是新产生的链表(2个链表的不同节点组成)的头节点
tail,是用来在链表尾插入新节点的
时间: 2025-01-25 09:00:19