【数据结构】学习之路

2018-01-03  本文已影响26人  zhangPeng丶

简书http://www.jianshu.com/u/5690b3ad0a6f
Bloghttp://blog.zhangpeng.site
GitHubhttps://github.com/fullstack-zhangpeng

笔记

线性表

从名字上看,就是具有像线一样性质的线。
线性表:零个或多个数据元素的有限序列


顺序存储结构

定义

线性表的顺序存储结构,指的是用一段地址连续的存储单元一次存储线性表的数据元素。

存储方式

在内存中找块地址,通过占位的形式,将一定的内存空间占住,然后把相同类型的数据元素依次放入这块空地中。既然线性表的每个数据元素的类型都相同,所以可以用一维数组来实现顺序存储结构,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组相邻的位置。

数组长度和线性表长度区别

在任意时刻,线性表的长度应该小于等于数组的长度。

优缺点

优点:

  1. 无需为表示表中元素之间的逻辑关系而增加额外的存储空间
  2. 可以快速地存取表中任意位置的元素
    缺点:
  3. 插入和删除操作需要移动大量的元素
  4. 当线性表长度变化较大时,难以确定存储空间的容量
  5. 造成存储空间的“碎片”

链式存储结构

定义

为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系。对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称之为数据域,把存储直接后继位置的域称之为指针域。指针域中存储的信息称作指针或链。这两部分信息组成数据元素ai的存储映像,称之为节点(Node)。
n个结点(ai的存储映像)链结成一个链表,即为线性表的链式存储结构。

头指针和头结点

头指针
链表中第一个结点的存储位置叫做头指针。

头节点
为了方便的对链表进行操作,会在单链表的第一个结点前附设一个结点,成为头结点。


单链表

因为链表的每个节点中只包含一个指针域,所以称之为单链表。

单链表结构与顺序存储结构对比
存储分配方式

时间性能

空间性能

总结


静态链表
循环链表
双向链表
上一篇 下一篇

猜你喜欢

热点阅读