求教一个关于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编辑过]