Osheep

时光不回头,当下最重要。

新手数据结构笔记

由于现实生活中的事物太过于复杂,以至于我们用到的编译软件只能给我们简单的几种类型,,如int,char,float等,但是我们的世界并不是那么简单。由于类型的不足,数据结构应运而生。数据结构的本质其实就是定义一个复杂的类型,然后再定义了类型的行为。假如把我们现实生活中的时间定义成一个结构体,那么它的结构体组成就是它的基本属性(年月日时分秒),而它的行为就是一个函数(不停的增加),因为现实生活的时间只有一种行为,那就是一直的走下去。

数据结构的意思有两种,一个是数据的逻辑结构,如:线性表,树,图。这是在逻辑中人为构想出的结构。另外一种是物理储存结构,如不需要指针的数组是储存在一块连续的物理内存中,而需要指针的结构,因为它的下一个数据元素的地址是未知的,所以总是需要为新的数据元素申请新的结点空间,并又上一个结点的指针指向下一个结点的首地址。基本上每一种逻辑上的结构体,都能又两种储存方式储存,而这两种方式的结构体函数和操作函数也会有细微的差别。

所以,我们只需要记住每个结构体有那些组成部分就好了,至于它的操作,也是操作的函数实现,可以根据它的结构来推断出来。值得注意的是如果一个结构体有头节点,那么它的头指针是指向头节点的,再又头节点的指针指向第一个数据元素。如果没有头节点的结构体,那么它的头指针是直接指向它的第一个数据元素。所以有头节点时和无头结点是的操作函数有略微的不同,应注意。

在明白了结构体的组成之后,还需要了解特殊结构体的特殊属性,如:堆栈与队列(其实这些特殊结构体也是前人发明创造出来的,能够完成一些特殊的数据处理,所以这些属性都是死的,记下了应该不难)。并且在编写操作函数时应该注意特殊属性的影响。

除了操作函数之外的复杂函数(比如说遍历算法等),这些因为是根据结构体的结构为了完成某种目的而编写的函数,而计算机又太笨,所以它只会一步一步的做。所以我们只需要明白一步一步是怎么做得,然后运用数学方法归纳总结,再用高级语言尽量写的简洁点,降低我们的劳动量就好了。如果实在是不能记住,那我们只能用伪代码(不注重细节,无法运行,只有算法)的形式,让老师尽量看懂,明白你的思路。

还有一点,由于我们定义了新的结构体也就是类型,所以这些结构体都需要一个初始化的函数,它的作用就是,当你建立了一个结构体的对象时,需要对他赋值(也就是初始化的时候)需要调用初始化函数(也就是c++中的构造函数),才能完成初始化。

有什么不对,请指出..初学者的理解肯定还是太肤浅

点赞