数据结构 栈和队列上

一.学习了这么久的顺序表和链表,现在来掰扯掰扯顺序表和链表的优点和缺点把。

顺序表的优点:1.尾插尾删的效率高

                         2.可以通过下标随机访问

                         3.cpu告诉缓存命中率更高

顺序表缺点:1.头部或者中部插入删除效率低

         2.扩容过程会造成时间和空间的消耗

链表的优点:1.任意位置插入删除效率高

                     2. 可以按需开辟释放空间

链表的缺点:1.不支持随机访问

                      2.频繁调用malloc会造成空间的一定损耗

在实际运用中,有关空间的损耗顺序表和链表相差不大,最重要的是根据插入数据的位置挑选合适的线性表来实现功能。

关于顺序表第三个优点的详解:

 核心关注点在cpu!

寄存器就是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。一般四个字节或者是八个字节。在cpu周围大约由几十个寄存器。那么寄存器可以相当于皇帝身边的暗卫。

CPU是中央处理器(Central Processing Unit)的缩写。中央处理器是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。类似于古代皇帝,是处理国家高级军务事理的。

三级缓存可以理解为cpu皇帝身边的锦衣卫,是向皇帝传输情报的机构。

主存可以理解为是中央的官员,磁盘相当于底层官员。

而远程二级存储在现实生活例子有网盘存储一些文件照片视频等,可以理解为一些村长乡绅之类的人物。

以上比喻要有不妥处,请谅解。作此比喻目的在于要理解这些具有存储数据功能的硬件的地位。

内存和主存并不是一样。内存包括主存(内存条,基于DRAM)与高速缓存(Cache,基于SRAM)两部分。

主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大

像类似顺序表、链表存放的数据在主存中。

程序员编写的程序根据编译链接成可执行程序,加载到内存中去,操作系统加载程序执行,并将数据指令传送到cpu缓存中去等待处理。

cpu执行指令,不会直接访问内存,由两种方式:

1.先看数据是否在三级缓存,在(命中)。直接访问

2.不在(不命中)。先将数据存储在缓存,在访问。

数据在由主存向三级缓存中存储数据,是存在局部性原理的。即要访问4个字节,可能实际会访问十六甚至更多的字节数。

二.栈

1.概念

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端
称为栈顶,另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO Last In First Out )的原则。
压栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶
出栈:栈的删除操作叫做出栈。 出数据也在栈顶
在栈中插入数据,可以想象成在一个无顶的圆柱体小桶内投掷小球。

2.实现增删查改的功能

 3.栈的相关习题讲解

有效括号

题目要求:

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例:

题解:左括号入栈,遇到右括号,将栈顶元素出栈匹配

 三.队列

1.概念:

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出
FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为 队头

2.实现:

3.应用:

本篇文章中的队列代码仍旧存在问题,丞待修改。请误照抄照搬!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值