当前位置:   article > 正文

1.栈的压栈(入栈、进栈)及出栈 2.顺序表及链表的缓存命中

压栈

一、栈的压栈(入栈、进栈)及出栈

1.栈
1.1栈的概念及结构
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端
称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据也在栈顶

----遵循 后进先出(先进后出)的原则 Last In First Out

数组模拟实现栈 的链接:(9条消息) 数组 模拟实现 栈_anyway33的博客-CSDN博客

二、 顺序表及链表的缓存命中

首先缓存命中是什么?

CPU在执行命令的时候会先从缓存中读取数据,如果缓存中没有,那就会直接去内存中读取。每次在读取内存的目标数据的时候也会把周围部分的数据给读取到缓存中,然后CPU到读取缓存中的数据执行指令。

顺序表:物理结构上是连续的,所以在CPU内存中读取的时候,目标数据附近的数据也是下一个目标的数据,不用重新读取内存,一次读取内存就可以获得多的目标数据。

链表:物理结构上不是连续的,是随机的,所以CPU在内存中读取的时候,目标数据附近的数据不一定是下一个目标的数据,需要多次重新读取内存中的目标数据,操作损害高,会导致性能下降。

-------这就是缓存命中

顺序表:(9条消息) Seqlist顺序表的实现_anyway33的博客-CSDN博客

链表:(9条消息) C语言SList链表的多功能的实现_anyway33的博客-CSDN博客

顺序表和链表的区别:

不同点顺序表链表
存储空间上物理上一定连续逻辑上连续,但物理上不一定
连续
随机访问支持O(1)不支持:O(N)
任意位置插入或者删除
元素
可能需要搬移元素,效率低
O(N)
只需修改指针指向
插入动态顺序表,空间不够时需要
扩容
没有容量的概念
应用场景元素高效存储+频繁访问任意位置插入和删除频繁
缓存利用率

备注:缓存利用率参考存储体系结构 以及 局部原理性。


 
与程序员相关的缓存知识:与程序员相关的CPU缓存知识 | 酷 壳 - CoolShell

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号