| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 516 人关注过本帖
标题:求教一个关于linklist的问题
只看楼主 加入收藏
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
结帖率:100%
收藏
 问题点数:0 回复次数:2 
求教一个关于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编辑过]

搜索更多相关主题的帖子: difference 而且 
2015-10-29 12:10
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
收藏
得分:0 
...............人呢,大神不要高冷了,来关爱一下基层群众
2015-10-30 08:41
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
程序代码:
   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;
            }//如果copy_node == NULL,上面这些都不执行.会直接执行下面的这个.
            tail = new_node;
        }
    }



程序代码:

list1 == list2   //比较的是两个节点的指针是否相等

list1->data = list2->data  //比较的是两个节点中存储的数据是否相等


[此贴子已经被作者于2015-10-31 19:39编辑过]


代码测试环境:  WinXP+C-Free5.0.
2015-10-31 19:37
快速回复:求教一个关于linklist的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029962 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved