学习数据结构,首先要先知道一些概念。
这些概念,等用代码实现后,才能有更深的理解,这里看不懂没有关系。
数据:能输入到计算机并且被计算机识别的字符,没有具体的大小及范围。比如符号、数字等。
数据元素(比如一个结点Node,在Java中是一个类):数据元素就是数据的基本单元,数据元素通常是一个整体。
数据项(比如一个结点中的data或者引用next,在Java中是一个成员变量):数据项就是结点类中的成员变量。
数据对象(比如多个结点拼成的链表,在Java中是一个类,组合结点Node):数据对象是数据元素的集合,比如多个结点连成链表,链表就是一个数据对象。
那么什么是数据结构呢?
通俗地理解,就是数据元素和数据元素之间的关系,可以是一对一的关系,可以是一对多的关系,可以是多对多的关系,这就是数据结构。
数据结构又分为逻辑结构和物理结构,它们又是什么呢?
还是通俗地理解,逻辑结构包括集合结构、线性结构、树形结构和图形结构,别被这些高大上的名字吓到,其实就是一堆数据元素放在一起,线性结构就是数据元素之间一对一,树形结构就是元素之间一对多,图形结构就是元素之间多对多,集合结构就是数据元素虽然放在一起,但是他们之间没有半毛钱关系。
物理结构呢,超级好理解!就是将多个有关联的数据元素存储到计算机时的存储方式,有顺序存储和链式存储(学得少,目前只知道这两个…)。顺序存储就是在计算机中开辟一个连续的空间,来存放这些数据元素;链式存储,则是开辟的空间不连续,这里丢一个数据元素,那里丢一个数据元素。
关于多种逻辑结构,用图来表示,超级直观。
图形结构
线性结构
树形结构
集合结构