了解过线性表的链式存储结构之后,有人就想出来用数组来代替指针,来描述单链表。看看他们是怎么作到的。数组
让数组的元素都由两个数据域组成,data和cur。也就是说,数组的每一个下标都有对应的一个data和cur。数据域data,用来存放数据元素,而cur至关于单链表中的next指针,存放该元素的后继在数组中的下标,咱们把cur叫作游标。微信
这种用数组描述的链表叫作静态链表,咱们把这种描述叫作游标实现法。指针
另外咱们对数组第一个和最后一个元素做为特殊元素处理,不存数据。咱们一般把未使用的数组元素称为备用链表。orm
数组第一个元素,即下标为0的元素的cur存放备用链表的第一个节点的下标;而数组最后一个元素的cur存放第一个有数值的元素的下标,至关于单链表中的头节点的做用。cdn
以下图: blog
咱们对静态链表的插入和删除操做简单了解如下:图片
静态链表中要解决的是:如何用静态模拟动态链表的存储空间的分配,须要时申请,无用时释放。内存
对于单链表,因为每一个结点只存储了向后的指针,到了尾标就中止了向后链的操做,这样,当某一个结点就没法找到它的前驱结点了。it
将单链表中终端结点的指针端由空指针改成指向头结点,就使整个单链表造成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。io
显然解决了一个问题:当从一个结点出发,访问链表的全部结点。
双向链表:是在单链表的每一个结点中,再设置一个指向其前驱结点的指针域。
双向链表的好处:某个结点对先后结点的操做更快;
双向链表的不足:一个结点,两个指针,耗内存更大。
既然单链表能够由循环链表,那么双向链表固然也能够是循环表,其结构以下:
关于线性表就整理到这里了,文中有不对或不足的地方,但愿你们可以反馈给我,一块儿进步。
更多精彩内容,关注个人微信公众号——Android机动车