广州怎么建设一个网站,网站开发工作程序怎么写,东莞建站公司快荐全网天下特别好,惠州seo外包v1之前#xff0c;我们说过#xff0c;数据结构是算法的基础#xff0c;因此接下来在这一讲我就要来给大家重点介绍一下数据结构了。
首先#xff0c;大家需要知道的是#xff0c;数据结构包括两部分#xff0c;即线性结构和非线性结构。知道这点之后#xff0c;接下来我…之前我们说过数据结构是算法的基础因此接下来在这一讲我就要来给大家重点介绍一下数据结构了。
首先大家需要知道的是数据结构包括两部分即线性结构和非线性结构。知道这点之后接下来我势必就要来为大家分别进行详细介绍了下面咱们不妨先来看一下线性结构。
线性结构
关于线性结构下面我一共罗列出来了五点需要大家进行掌握。
第一点线性结构作为最常用的数据结构其特点是数据元素之间存在一对一的线性关系。就拿我们学过的一维数组来说大家应该知道每一个下标就唯一对应一个值吧而这就叫做一对一的线性关系因此一维数组就是一种典型的线性结构当然除了一维数组之外链表也是一种线性结构。
第二点线性结构有两种不同的存储结构即顺序存储结构和链式存储结构。
第三点顺序存储的线性表称为顺序表且顺序表中的存储元素是连续的。例如数组它就是一个顺序表不必我说大家也都知道它里面的存储元素是连续的吧
注意这里的连续指的是存储元素之间的地址是连续的为什么我会这么说呢因为顺序表在内存中是以连续存储的方式进行存储的而这也就是说一旦在内存中为顺序表分配好了存储空间那么它里面的元素就会被存储在一块连续的内存空间中自然这些存储元素之间的地址就是连续的了。
第四点链式存储的线性表称为链表与顺序表不同的是链表中的存储元素不一定是连续的且元素节点中存放的是数据元素以及相邻元素的地址信息。
初次谈起链表这种存储结构相信大家可能会一头雾水如果你没学过的话不过没学过也没关系因为我们这套系列教程后面就会给大家介绍到比方说单链表、双向链表等等。当然这里我们说的是链表既然说的是链表那它肯定就与顺序表不同了具体点说就是链表中的存储元素就不一定是连续的了也就是说有可能是连续的也有可能是不连续的感觉我说了句废话哈哈哈而且链表中的每一个存储元素你都可以看作是一个节点至于每一个节点中存放的是什么我相信大家也都知道了即数据元素以及相邻元素的地址信息。
看到这里我相信大家已经已然知晓这一点了即链表中节点与节点之间是通过地址来相互连接的而且它们之间的地址还不一定连续。正是因为节点与节点之间相互连接的地址不一定连续所以链表才有了这样一个好处即可以充分的利用碎片内存。
第五点线性结构常见的有数组、队列、链表和栈这里大家先知道有这四种常见的线性结构就行后面我再来给大家进行详细介绍啊
说起数组相信大家对其应该是再熟悉不过的了不过你有可能不知道的是数组也可以分好多种哟例如稀疏数组至于队列嘛它也有单向队列、环形队列之分链表就更是如此了它同样也有单链表、环形链表、双向链表之分至于栈嘛大家可能会感觉有点陌生不过它也有不同的实现方式例如可以用数组来实现或者也可以用链表来实现。凡此种种后面我都会给大家详细介绍到。
最后再给大家提个醒吧就是大家学完数据结构之后别人问你线性结构有哪些你可不要连最基本的线性结构包括哪些都答不上来哟你得答上来才行否则这不就是出大问题了嘛
非线性结构
与线性结构相反非线性结构其数据元素之间可能就不存在那种一对一的线性关系了或者亦可说至少已经不是那种一对一的线性关系了。
例如一个节点下面不仅可以有左节点而且还可以有右节点如下所示。 甚至它下面可能还有第三个节点而这就叫做多路查询树。 当然如果大家这块听得不是太明白那么也不打紧因为后面我就会给大家详细介绍到。
上面我们讲到线性结构常见的有数组、队列、链表和栈那么非线性结构又具体包括哪些呢非线性结构包括二维数组、多维数组、广义表、树结构以及图结构。
关于数组尤其是二维数组我想大家对其应该是再熟悉不过的了而且马上我们就会讲到它当然讲二维数组我们会重点讲稀疏数组至于稀疏数组是什么大家下一讲就会知道至于树结构和图结构它俩是我们用的最多的非线性结构而且由它俩还引申出来了很多很多算法因此它俩将是我们后续学习的一个重点到时候学的时候大家可要打起万分精神来学哟
至此关于线性结构和非线性结构的介绍我就给大家讲到这里了希望经过我的讲解大家能对线性结构和非线性结构有一个最基本的认识。