求教一个关于linklist的问题
一个输出两个list不同数字的程序,比如list1 = 1 -> 2 -> 3 -> 4 -> 5 ,list2 = 2 -> 4 -> 6, 所以不同就是 1 -> 3 -> 5 -> 6,而且要从小到大排列以下是答案:
程序代码:Lnode *difference(Lnode *list1, Lnode *list2)
{
Lnode *head;
Lnode *tail;
Lnode *new_node;
Lnode *copy_node;
while(list1 != NULL || list2 != NULL) {
copy_node = NULL;
if(list1 != NULL && list2 != NULL && list1->data == list2->data){ //如果两个数据一样,就跳过
list1 = list1->next;
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 || list1->data > list2->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);
}
我不理解为什么最后那个tail=new_node是干嘛的,既然前面new_node已经被等于过了......还有list1 = list2和list1->data = list2->data有区别吗? 求指教.........谢谢!!!
[此贴子已经被作者于2015-10-29 16:58编辑过]








