#中队列的数据结构_停课不停学|数据结构第一节来啦!

当当当,我们又双叒叕来和小伙伴见面了

为响应疫情期间#停课不停学,我们隆重推出线上课程,接下来就由小编带领大家了解一下数据结构叭~~

前言

数据结构:研究非数值计算的程序设计问题中的计算机操作对象以及它们之间关系和操作的一门课程。

数据结构作为一门计算机基础课,它的重要性不必多说,然而学习过程也十分烧脑。这个系列是为帮助一些同学更快的将数据结构重要思想内化。Let’s go!

0x01 绪论

01

6cd491697a847b303f7b49327fb31b90.png

首先我们要知道数据结构的主要研究内容:

·数据的逻辑结构

·数据的物理结构

·算法

·了解顺序与链式结构的优劣以及使用的场合

02

6cd491697a847b303f7b49327fb31b90.png

算法的五大特性:

输入,输出,确定性,有穷性,可行性


重点要掌握时间复杂度的分析(执行次数与问题规模n之间的关系)

算法的时间度量记为:T(n)=O(f(n))

(其中O表示渐近上限,T(n)称为算法的渐近时间复杂度。在一个算法中,基本操作的重复执行次数是问题规模 n 的某个函数,用f(n)表示。随问题规模n的增大,算法执行时间T(n)的增长率和f(n)的增长率相同。)

时间复杂度一般用O(n),O(log n),O(n^2)等表示

1105de3a0ba1180fd91497a6e472d187.png

例如上面这个题,i从1开始,每循环一次变为原来的两倍。所以时间复杂度就是O(log n)

03

6cd491697a847b303f7b49327fb31b90.png

线性结构

主要有数组,链表,栈,队列,(字符)串等数据

数组就不多说了,随机存取快,插入删除慢

而链表则相反,需要注意的是链表插入删除时指针改变的顺序,不能让前面的指针改变影响到后面指针,双向链表也是同理

栈是先进后出(FILO),而队列是先进先出(FIFO),栈的实现有数组与链表两种,基本操作:进栈,出栈,判断栈空,栈满条件。给入栈顺序要写出所有可能的出栈顺序

34dd16ab0da607343898a39a00fa92dc.png

队列的重点是循环队列,基本操作也是入队列和出队列,但是判断队列空或者队列满的条件有两种,一种是少使用一个空间,让front == rear时表示队列空而(rear+1)%MaxSize == front来表示队列满。(注意队首与队尾位置的定义,看到我上面写的表达式可以知道我队首时指向队列的第一个元素而队尾是队列最后一个元素的下一个位置)

6ec2467388f74826830cc8c7637613cd.png

链队列:只需注意删除最后一个元素时队尾指针需要修改,否则将会丢失队尾指针

串需要掌握的东西不多,就是kmp算法,但是真正理解起来比较难。个人建议是可以根据visual studio单步调试用纸一步一步的写一遍过程,我也没有更好理解的方法了-_- 。必须要知道kmp算法中next数组的求法

例如:

55a75544a1922fcc830d10c3282419b0.png

本期数据结构的介绍到这里就要和大家说goodbye啦

有问题的小伙伴可以在评论区留言哦

开学时间也快要到啦

许多课程开始进行线上学习

希望大家能及时调整到学习状态

在家也能好好学习

一起加油鸭

文案:邹伟

排版:龙芯雨

e7b572621cf987df8efe10d8d48e87d5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值