[考研系列之数据结构]线性表概述

1.脑图





2.表示方法
按照数据结构概述所说,线性表有两种表示方法分别是顺序表示和链式表示, 链表就是链式表示的典型。
我们知道链式表示是分配了n块内存空间,可以认为彼此不连续,所以不能用偏移量去定位每个元素。
下面就先说最简单的 单向链表 :
如果每个数据元素能有一个指针指向下一个元素的话,那么只需要知道第一个数据元素就能一个一个的遍历整个链表了,这就是单向链表。
对于每个链表元素我们称之为 节点 ,每个节点都有两个域: 数据域& 指针域
数据域 就是数据元素所在的区域, 指针域则是存储指向另一个节点的指针的区域。
对于单向链表,它的指针域有一个指针指向下一个节点的内存地址。
需要注意的是:
头节点 指向表中第一个节点,它本身的数据域不带数据,所以判断链表NULL的方法是判断头结点的指针是否为空。
最后一个节点的指针应指向NULL。
对于单向链表,它有一个问题。那就是当你获取链表中第n个元素(n>1)时,想获取它的上一个指针,需要重新遍历一遍链表,算法复杂度O(n)。为了应对这个问题,我们引入了双向链表。
双向链表
单向链表每个结点的指针域只有一个指向下一个结点的指针,现在在上面加上一个指向前一个结点的指针就变成了双向链表。这样,要寻找前一个结点只需要O(1)就可以了。
还有一类形式的链表,就是 循环链表

它在单向链表上做了一点小改动,在单向链表中最后一个结点的指针是指向NULL的,可是循环链表中最后一个结点的指针是指向第一个结点的。


3.栈和队列
栈和队列都是特殊的线性表,因为他们的操作集合是小于完整的线性表的,它们在线性表之上加上了限制条件。

栈最大的特征就是 LIFO (Last In First Out),也就是后入先出。最后入栈的元素最先出栈。
队列

队列最大的特征和栈相反,是FIFO(First In First Out),也就是先入先出。最先入队的元素最先出队。


4.字符串

字符串是一类特别的线性表,它的所有元素都是单个字符,针对字符串,最重要的就是寻找子串也就是字符串匹配算法了,后面会涉及。


5.数组

学过C/C++的人都会无比熟悉,也不废话了。进阶是二维数组也就是矩阵,这个会有一些要点。


6.广义表
广义表就是线性表的扩展,我们知道线性表所有的元素都是同类的,但是广义表可以使得每个元素都是不同类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值