数据结构第四章学习小结
Posted cxuep
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构第四章学习小结相关的知识,希望对你有一定的参考价值。
一、本章学习小结:第四章主要学习了串、数组和广义表,与以前学习的区别在于,本章将它们视为线性表。
1)串是内容受限的线性表,考虑到存储效率和算法方便性,一般采用顺序存储结构;考虑到串变量相差较大,可采用动态分配的方法;为了便于操作,可增设尾指针。
串的主要应用场景是模式匹配,其中有BF算法和KMP算法。
2)关于数组,本章还介绍了特殊矩阵(对称矩阵,三角矩阵,对角矩阵)的压缩存储,可用三元组表和十字链表(5个数据域)表示,主要学习求已知下标的元素的地址。
3)广义表是线性表的推广,是递归的定义,即广义表的元素可以是单个元素,也可以是另一个广义表,因此采用链式存储结构,分为头尾链表的存储结构和扩展线性链表的存储结构,前者需要设立表结点和原子结点,后者均有三个三个域组成(tag,tp,hp)。
二、完成作业和实践的心得体会:
1、KMP算法难度较大,自己打代码时总是无从下手,需要再琢磨琢磨buildMatch算法。
2、完成实践1时遇到了时间效率的问题,通过调用Array函数实现快排时间复杂度为n*log2(n),效率较高,不过发现别的同学用的是建立数组“投票”的方式,但我觉得申请一个10^6的数组太浪费了。
3、讨论题目中最大的问题在于区分string和char*。
1)若有:string s; //string 类的默认构造函数会生成一个空串,长度为 0 这种情况下对 s 的任何下标访问都是错误的。2)不能把‘