普歌-毅雁-特殊线型表

特殊线型表的概括


前言

在数据结构中我们学习了线型结构,那么这篇我们来扒一扒特殊的线型结构


下面进入正题全程高能没请各位观众姥爷们坐好。

一、概述

分类如图所示:
特殊线型表分类

还是惯用的套路,我们从数据结构的三要素——逻辑结构,数据运算,存储结构。

二、栈(Stack)

定义

只允许在一端进行插入或操作(LIFO)的线型表

栈又名堆栈,英文Stack的意思是一堆,在进行操作时也只能在一顶部进行操作,是一种运算受限的线型表。
它的实现又可以分为两种:-顺序栈(被数组实现) - 链栈(被链表实现)

栈的示意图

基本概念

栈顶

最后一个入栈的元素,可以进行插入和删除的一端叫栈顶。相对动态

栈底

同理和栈顶相反的一端,不可以进行任意操作的一端就是栈底

入栈

第一个进入栈的元素就叫入栈,也称为压栈。

出栈

使用结束后,将元素删除的操作,就是出栈,也叫退栈。

共享栈

因为栈的内存有限,存入数据过多就会发生栈的溢出,为了解决内存的分配问题。

于是共享栈就出现了

两片栈公共使用一片空间,而这片空间不属于任意一方,只有当数据存储进来的时候才会占用,两个栈从两边往中间增长。

示意图如下:
共享栈

空栈

不含任何数据的栈。

合法出栈顺序

n个不同元素进栈,出栈元素不同排列的使用卡特数计算一下

有兴趣的小伙伴可以当做一道智力题来了解一下。

三、队列(Queue)

定义

和栈相对的对应的是队列,只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,简写(FIFO)。

和栈一样,队列是一种操作受限制的线性表。他的底层实际上是操作受限的,所以他也遵循线型表的一些规则,感兴趣的朋友可以点解了解一下。

简单理解就像在排队一样
队列示意图

基本概念

对头

顾名思义,因为队列的特性,所以进行删除操作的端称为队头。

队尾

同理进行插入操作的端称为队尾

空队列

这个。。。就不用多说了吧

对头,队尾元素

就是指在双端的元素,这个也很好理解。

分类

循环队列

循环队列就是在逻辑上将最后一个位置环绕在第一个位置上。

特点:

循环队列的好处是可以防止伪溢出。

下面我们来看看他的实现步骤:

具体实现

在队列中设置两个指针,用来记录对头位置(front)与队尾位置(rear)。

如果两个指针重合,则判定这个队列为空。
而如果在循环队列中,两个指针位置相差一那么就可以判断这个队列已满,用牺牲一个位置的方法来判断队列是否已满。
循环对列描述图

链式实现对列

如果用链式存储,那么他就会具备链表的一些基本属性,这里我就不在展开说。
感兴趣点这里点这里。

那么它的好处也是显而易见的,不用担心内存分配不够的问题。

双端对列

我们对对列已经有不少认识了,那么双端对列也是如此。

其实就是在任意一段都可以进行增删操作。
还有一些受限的双端对列,下面放一张图供大家理解。

示意图如下:
双端对列

优先对列(priority queue)

说到优先对列估计会很陌生,但是谈的插队时应该就了解了吧!

优先对列的简单理解就是插队。

那么他是这么实现插队的呢?
这个就要用堆排序,如果想详细了解堆排序的敬请关注我。在后续我会一一为大家解难。

四 、串(String)

定义

串,即字符串(String)是由零个或多个字符串组成的有限序列

基本概念

串长

一个字符串中包含的字符数。

子串

串中任意个连续的字符串组成的子序列

主串

链式存储中的主串包含了每一个子串的地址。

空串

长度为零。

对比线型表

串是一种特殊的线型表,数据元素呈现线型关系。

项目
对象限定中文字符,英文字符,数字字符,标点字符
操作对象子串

线型表
这里留给大家思考一下,有问题可以写在评论区,有问必答。

串的比较

本质上比较的就是字符编码,从头开始比较判断。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远归的雁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值