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
1.栈的压栈(入栈、进栈)及出栈 2.顺序表及链表的缓存命中相关推荐
- 顺序栈初始化,判空,进栈,出栈,打印
#include<iostream>#define maxSize 100 //后面没有分号 ; using namespace std;typedef struct //顺序栈的定义 { ...
- 给定入栈序列,判断一个串是否为出栈序列
剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...
- 进栈,出栈的详细知识
有六个元素FEDCBA 从左至右依次顺序进栈,在进栈过程中会有元素被弹出栈.问下列哪一个不可能是合法的出栈序列? A) EDCFAB B) DECABF C) CDFEBA D) BCDAEF关于进 ...
- 简述顺序表、链表、栈和队列以及队列实现栈、栈实现队列
简述顺序表.链表.栈和队列以及队列实现栈.栈实现队列 顺序表Vector 原理 使用方法 优点和缺点 链表List 原理 使用方法 优点和缺点 栈Stack 定义和特点 使用方法 队列 定义和特点 使 ...
- C语言实现栈的进栈与出栈、输出栈顶元素、元素个数、销毁栈
/********************************引入头文件**************************************************/ #include&l ...
- 数据结构栈的操作,初始化栈,进栈,出栈,读取栈顶元素;
代码段: #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h ...
- 链式栈的初始化,判空,进栈,出栈,求长,求顶,打印,清空和销毁
链接地址http://blog.csdn.net/stpeace/article/details/8112821 #include<iostream>using namespace std ...
- 判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...
回文:字符对称排列的字符串,例如ABCBA 思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等.如果相等,则为回文. 创建控制台应用程序. 1 #region 字符节点类 ...
- C++顺序栈的实现(进栈,出栈,判断栈空,打印输出,获取栈顶元素)
#include <iostream> using namespace std; typedef int ElemType; //栈的结构类型 #define MaxSize 50//定义 ...
最新文章
- asp.net导出到Excel的最佳选择
- 不对全文内容进行索引的 Loki 到底优秀在哪里
- 疯狂的程序员-第五章
- RobotFramework+jenkins持续化集成及高级操作API
- python进行linux编程,Python之函数进阶
- linux乌班图vi怎么使用,Ubuntu上vi(vim)编辑器使用教程
- java string 字符个数字_java从字符串中提取数字
- Bootstrap 堆叠式导航
- 加载图片时报错,请大虾帮忙看看!
- 并发编程学习之线程8锁
- 金蝶k3服务器维护,金蝶k3问题处理-完整版.docx
- java是牌子的眼镜多少钱_基于jsp的眼镜商城-JavaEE实现眼镜商城 - java项目源码
- NMF(非负矩阵分解)
- 86版五笔-拆字规则
- React-注册事件
- ui 名前空間の Aura コンポーネントの廃止
- 2023养生健康品牌连锁加盟展/医养健康产业展/山东大健康展
- arcos的matlab定义,基于MATLAB编程软的齿轮设计
- 侍魂胧月传说服务器维护,《侍魂胧月传说》2018年12月12日2:00进行全服停机更新维护...
- 帝国cms html5 编辑器,帝国CMS修改默认编辑器为百度编辑器UEditor的方法