线性表

一、本章学习小结:第四章主要学习了串、数组和广义表,与以前学习的区别在于,本章将它们视为线性表。

1)串是内容受限的线性表,考虑到存储效率和算法方便性,一般采用顺序存储结构;考虑到串变量相差较大,可采用动态分配的方法;为了便于操作,可增设尾指针。

串的主要应用场景是模式匹配,其中有BF算法和KMP算法。

2)关于数组,本章还介绍了特殊矩阵(对称矩阵,三角矩阵,对角矩阵)的压缩存储,可用三元组表和十字链表(5个数据域)表示,主要学习求已知下标的元素的地址。

3)广义表是线性表的推广,是递归的定义,即广义表的元素可以是单个元素,也可以是另一个广义表,因此采用链式存储结构,分为头尾链表的存储结构和扩展线性链表的存储结构,前者需要设立表结点和原子结点,后者均有三个三个域组成(tag,tp,hp)。

 

二、完成作业和实践的心得体会:

1、KMP算法难度较大,自己打代码时总是无从下手,需要再琢磨琢磨buildMatch算法。

2、完成实践1时遇到了时间效率的问题,通过调用Array函数实现快排时间复杂度为n*log2(n),效率较高,不过发现别的同学用的是建立数组“投票”的方式,但我觉得申请一个10^6的数组太浪费了。

3、讨论题目中最大的问题在于区分stringchar*

1)若有:string s; //string 类的默认构造函数会生成一个空串,长度为 0 这种情况下对 s 的任何下标访问都是错误的2)不能把‘\0’看做string对象的结尾符。3)string和char[]互相赋值时,可采用c_str()、data()、copy(string,len,pos)的方法。

 

三、易错点小结

1)计算数组元素地址下标时,注意是按行还是按列存放。

2KMP算法(时间复杂度为O(m+n)

 

 

 

 

 

 

四、目标完成情况接下来的目标

1、目标完成情况:本章的内容其实并不多,但是感觉还没有完全掌握,最近的学习态度有待调整。

2、接下来的目标:

1)自己查找资料的能力不足,有待提高;

巩固第四章的学习内容,好好努力,跟上教学进度,学好下一章的内容。

posted @ 2020-05-04 11:49  陈雪佩  阅读(203)  评论(0编辑  收藏  举报