第四章_串、数组和广义表_学习小结

串、数组和广义表

广义表被鸽了,暂时就不提它,总结一下串和数组的心得。

串本身不难,好比字符数组,都是我们所熟悉的。难得是与其相关的算法,例如KMP算法。
对于KMP算法,难点在于next数组的取得与使用。
点击跳转:基于KMP算法的字符匹配问题
以上是个人的一些见解,当然是参考别人的博客之后的....

数组

至于数组,这里主要研究二维数组的应用,比如用三元组表压缩存储。
由于书里连ADT都没有,只能自己摸索着定义了....(还不是为了PTA的题目QAQ)所以就稍微详细说一下
例:用三元组表压缩存储稀疏矩阵

//定义三元组表的单个结点
typedef struct {
    int row;        //所在行
    int column;     //所在列
    int value;      //值
}Node;

//定义三元组表
typedef struct {
    int rows;       //总行
    int columns;    //总列
    int nums;       //非零元素个数
    Node data[100]; //非零元素
}tupleTable;

三元组表收先要有个表的信息,包括矩阵的行、列,非零元素的总个数。然后才是里面的具体数值。
具体数值含有这个非零元素的具体信息,包括这个元素的所在行、所在列、它的值。所以用单个数据类型肯定是行不通的,要额外定义结构体,我们就叫它结点吧。
然后在三元组表里加入这个结点类型的数组,就能实现存储了。如果要查询输出,遍历tupleTable.data[i].value就行了。

AI代码

难得梅姐带着我们打代码,体会了整个解题过程,所以印象很深。一个点一个点进行,在过程中对程序进行优化,及时指出错误与不足。
点击跳转:手把手教你过AI核心代码
这种经历是十分难得的,无论是对于解题思路的梳理、还是代码的实现都是有很大好处XD

目标

之前学习了栈和队列,因为没有具体实现其各个功能而感到遗憾,于是就额外花时间将单链表基本功尽量去实现,效果不错,对单链表的理解也更加深刻,所以上周的目标也有好好实现呢。
点击跳转:单链表功能实现
接下来的计划是对STL进行一个了解与学习,特别是 。在学习各种函数用法的时候也尽量去看看源码,从最底层向上理解。不管是对基本的数据结构还是对PTA解题都会是个不错的助力。

猜你喜欢

转载自www.cnblogs.com/luoyang0515/p/10699814.html