请尊重作者的劳动成果,如需转载请注明出处,谢谢!
如果觉得不错,可以关注我或者点赞,这就是你们对我最大的鼓励!
数据结构是算法的副产品,也就是说我们使用算法的时候,会创造出一些数据结构来实现我们的想法。那么想要更好的理解某些算法,就需要了解数据结构啦。
首先,我们来认识一个概念就是我们常用的数组,其实就是指针,如果不知道指针是什么,可以点击 指针
实验得真知
实际上,创建数组就是申请一块内存单元。数组与指针是等价的。
数组的内存示意图如下所示
指针就是存储内存地址的变量,就像我们找房子一样,通过门牌号找房子。
门牌号就是内存地址,房子就是我们存放的值。
* 这个符号代表访问该地址对应的变量,&代表获得该变量的地址
现在,我们开始讲第一种数据结构,也是最基础的一种数据结构------线性表。
那么什么是线性表呢,直观的来看,就是下图
线性表就是一个又一个像上图绿色的个体串起来一种结构。绿色的方格我们称作线性表的数据元素。 数据元素即可以放基本数据类型,又可以放自定义的结构体。
线性表很灵活,它可以根据需要伸长或者缩短,即既可以插入,又可以删除元素。
那么,如何实现呢?要求有
一、能够存放各种类型数据
二、能够通过自己访问下一个元素
三、长度能够伸长和缩短
数组能够满足前两条,然而为了能够满足第三条,我们就需要使数组大小能够变化,即创建动态大小的数组。也称为顺序表。
使用C语言实现基本增删改查如下图
容易发现,使用顺序表改和查十分方便,但是增和删却很麻烦,每次增或删都要将数组元素进行挪动。这是由于数据的结构所决定的。不同的数据结构对算法有着至关重要的影响。
当我们经常使用改和查时,我们使用这种结构比较方便。
但当使用增和删比较频繁时,我们可以使用另外一种结构,叫链表。链表实现增和删比顺序表方便很多。
下节我们将介绍链表