第二章学习小结

Posted sheawong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章学习小结相关的知识,希望对你有一定的参考价值。

  第二章讲的是线性结构中的线性表,可以按照顺序存储结构和链式存储结构对它进行分类。以下是整理出来的重点:

技术图片

此外,如何打代码也是一个重点。从目前打过的代码来看,我主要存在的问题是:

1.结点类型和链表类型未分清楚。

  • typedef struct Lnode{

    Elemtype data;

    struct Lnode *next;

  }Lnode;//定义结点类型。若用其来定义指针类型,如Lnode *Linklist,申请新的空间后,这个(头)指针就指向Lnode类型的新结点。由于结点间通过指针连接,可称Linklist是一个链表。

  • typedef struct {

    Lnode *head;

   Lnode *tail;//分别指向链表的头结点和尾结点

  }List;//定义链表类型。如果该链表需要用到尾指针或者其他的元素(即只包含一个头指针不能满足所有的操作时),需要根据实际情况把所需的元素打包起来,定义一个链表。

  • typedef struct{
  float coef;
  int expn;
  }Polynomial;//定义数据元素的类型。顺序表的数据元素可以只包含一个数据,也可以包含多个数据(用结构体打包即可)。
 
  • typedef struct{
    Polynomial *elem;
    int length;
  }SqList; //定义顺序表的类型。其中的数据元素的数据类型可以是另外定义的结构体类型。

 

2.运行结束后没有回收申请的空间。

void destorylist(Linklist L)
{
  LNode *p=l1,*q;
  while(p)
  {
    q=p->next;
    delete(p);
    p=q;
  }//逐个删除结点
}

3.有时循环体中的判断语句写不好,经常会漏“指针p不为空”的条件。同时应该要考虑清楚p->next==NULL的情况该如何处理,判断是否继续进行循环时是用“p”去判断还是用"p->next"去判断。

4.容易忽略引用符号的使用。

5.考虑的情况不够全面,会漏空表、头结点这样的特殊情况。

  第二章的内容很多都跟代码相关,实践性会强一些。这次的预习是先看课本再看视频。概念是自以为理得大概清楚了,真正打起码来便开始模糊......比如发现自己没有理解循环链表相关操作的含义和目的、分不清结点和链表的定义等。我觉得我应该改改预习的方法,多动手去敲敲课本的代码熟悉它的写法这样。另外这周的学习中有小组合作打码的环节。我发现我的同学们都太棒了!晓娜会首先考虑代码的效率,从这个角度再去确定循环条件写什么。然后大家一起讨论的时候会慢慢想到各种情况再做修改。也许这可能是我们打代码打的慢的原因吧,一开始没有先想好有什么情况再写。总的来说,第2章的学习还是有不少收获的!

以上是关于第二章学习小结的主要内容,如果未能解决你的问题,请参考以下文章

数据结构:第二章学习小结

20181117-python第二章学习小结-part2

第二章学习小结

第二章学习小结

数据结构第二章小结

20181117-python第二章学习小结-part1