1.回顾内容
首先的这段时间,我们先提出了数据结构这个概念,首先。这个概念可以线性表的前提,告诉我们为啥要提出线性表这种结构,因为我们要合理地组织数据在内存的储存方式,从而提高数据在内存中的处理和组织方式,所以我们提出线性表这个简单的概念,用 于简单的数据结构学习,对于其他的语言,貌似是有其他的特有的数据结构的,而线性表的实现大概有两个。第一,用顺序表进行实现。第二,用链表进行实现。同时用指针去进行移动。同时我们也要明白一点;创建某一种数据结构是为了满足某种需求,所以诞生更多的数据结构,如同栈和队列等等。
2.主要的内容
1.线性表
线性表,我这段时间的有两种创建方式:1.用malloc实现一个动态数组,用确定的数组的最长长度,去动态申请一片空间。2.用一个强化类型的数组去实现线性结构。
2.链表
链表,当有需要的时候就申请一片空间再用指针和地址连起来,简单的说,就是用上一个节点的指针去指向下一个节点。
3. 其中的各项操作(详见前几期blog)
3.遇到的问题
1.越界
在我写出来的程序中,经常会出现“段错误”,就是访问了不该访问的空间,在判断循环的条件是还是不够仔细,许多的特殊情况都没有考虑到,总是出现越界的情况。
2.函数调用中出现的问题
对线性表进行操作时,一定要传入它的指针,而不是头节点这个结构体,因为,这个时侯如果传入的是这个头节点的复制(一个全新的复制),如果这个时候我们对这个结构体进行个项操作。就会出现一个问题——我们在函数中动态申请的空间会随着这个复制的结构体被释放而被废弃。所以我们要传入指针,也就是这个线性表的地址,访问这个指针去实现对线性表各项操作。
4.收获
这段时间学习闵帆老师的代码,我获得了良好的编写习惯,以前的我都是用眼睛去纠正代码,因为自己的代码难以调试,标准化,格式化的代码,虽然在写的时候有更高的要求,但是在调试的时候却能节省很多时间。