zoukankan      html  css  js  c++  java
  • 数据结构-第2章学习小结

    第二章小结

    一、本章内容的小结如图

    二、心得体会

    1.完成作业或实践:

    一开始自己没办法打出完整的代码,总会漏了这漏了那的,总要在慕课或者课本看看学习得怎么打,然后打完整个代码运行后还是有问题但是又找不出就找同学帮忙,挺有帮助的。多打代码多借鉴的多对比自己与别人的代码,话慢慢的就熟悉了一点套路,感觉会好很多。

    然后觉得,打代码,最重要的还是理解题意,花多点时间也值得,不然就是做无用功。比如实践1的7-1“零多项式应输出0 0”我就没理解好导致代码出错

    实践2,7-1的心得是交集的话,跟数学还是有点区别的,输出的结果还是非降序可以重复的,比如5 5 -1/5 5 6 -1 输出结果是5 5 而不是5。

    实践2,7-2的要求合并后新表不含重复元素,我的合并代码如下,想知道还能怎么简化

    void MergeList(LinkList La, LinkList Lb , LinkList &Lc)
    {
        //pa,pb指向待比较结点,初始化为指向首元结点 
        LNode *pa = La->next ;
        LNode *pb = Lb->next ;
        LNode *pc = Lc ;//利用尾插法,pc指向待建的单链表的最后一个结点,初始化指向头结点 
            
        while(pa && pb)
        {//当p或q为空时退出循环
        
            if( pc->data==pa->data || pc->data==pb->data)
            {//三种情况下要更新pa、pb( pc->data==pa->data、pc->data==pb->data、pc->data==pa->data==pb->data) 
                if(pc->data==pa->data) pa = pa->next ;
                if(pc->data==pb->data) pb = pb->next ;
                continue ;
            }
            
            //给pc增加新结点
            pc->next = new LNode ;
            pc = pc->next ;
            pc->next = NULL ;
            
            if(pa->data <= pb->data)
            {//pc结点值为pa->data 
                if(pa->data == pb->data) pb = pb->next ;// pa->data == pb->data时pa、pb都要更新 
                pc->data = pa->data ; 
                pa = pa->next ;
            }
            //if(pa->data > pb->data)
            else 
            {//pc新结点值为pb->data  
                pc->data = pb->data ; 
                pb = pb->next ;
            }
        }
        
        while(pb!=NULL)
        {//复制pb剩下的结点到pc 
            if(pb->data==pc->data) 
            {// pb->data==pc->data时更新到下一个pb 
                pb = pb->next ;
                continue ;
            }
            
            pc->next = new LNode ;
            pc = pc->next ;
            pc->next = NULL ;
            
            pc->data = pb->data ;
            pb = pb->next ;
        } 
    
        while(pa!=NULL)
        {//复制pa剩下的结点到pc
            if(pa->data==pc->data) 
            {//pa->data==pc->data时更新到下一个pa 
                pa = pa->next ;
                continue ;
            }
            pc->next = new LNode ;
            pc = pc->next ;
            pc->next = NULL ;
             
            pc->data = pa->data ;
            pa = pa->next ;
        }
        
    }
    View Code

    2.小组讨论:

    1)我的两个小组成员是真的棒(觉得自己运气爆棚),要好好向她们学习。

    第一次小组合作打代码觉得自己还是没有做好作为组长的职责,有点不够格的感觉,还要再接再厉,提高自己的题目分析、代码逻辑、代码编写还有小组合作能力。还有打字速度(笑泣.jpg)

    第二次小组合作自我感觉心态上比第一次好很多,而且合作过程比较有条不紊,我们感觉自己的代码很好,然而之后才知道有一个致命错误就是创建链表函数,还好老师给了我们个机会(感谢.jpg)。

    果然理解题目比什么都重要(再次敲小黑板)。这次的题目让我对链表、结构体有更深刻的认识

    2)第一次小组合作老师推荐的代码中,插入函数写的真的好简洁(大拇指.jpg)

    学到了“在循环体中return表示从被调函数返回到主调函数继续执行 ,return后函数就结束了后面的语句不再执行”

    void InsertList(LinkList &L,int x)
    {
        LNode *p = L ;
         
        while( p->next!= NULL)
        {
            //return表示从被调函数返回到主调函数继续执行 ,return后函数就结束了后面的语句不再执行 
            if(p->next->data == x ) return ;//p指向结点的下一个结点等于x 
            
             if(p->next->data > x ) break ;//p指向结点的下一个结点大于x 
             
            p = p->next ;
        } 
        
        //插入结点s,其data域值为x  
        LNode *s = new LNode ;
        s->data = x ;
                 
        s->next = p->next ;//当L为空链表时,p->next == NULL  
        p->next = s ;
        
    }

    3)两次小组互评发现好多人都没有在程序退出前回收空间,这一点要好好记住,自己下次一点不能忘

    void DestroyList(LinkList L)
    {//回收空间 
        LNode *p = L ;
        LNode *r ;
        while(p)
        {
            r = p->next ;
            delete(p) ;
            p = r ;
        }
    }

    三、分享

    双链表、循环链表讲的比较少,所以找了一篇相关的博文,有兴趣可以看看:https://blog.csdn.net/u014799564/article/details/102920365

    四、接下来的目标:

    没事多打代码,这样才能真正学会链表;多抽点时间先预习后面的学习内容,好好学好接下来的章节。努力!加油!

  • 相关阅读:
    安装lamp服务器
    Linux ssh登录命令
    一些替代Xshell的软件推荐
    字符串输入的几种方式
    Java数据库操作的一些注意
    模拟堆
    web安全基础第一天
    情报搜集
    kali中的postgres怎么连接
    LeetCode:Validate Binary Search Tree
  • 原文地址:https://www.cnblogs.com/Madge/p/12637904.html
Copyright © 2011-2022 走看看