C++ 线性群体的概念

news/2024/10/20 15:52:18/

线性群体中的元素次序与其位置关系是对应的。
在线性群体中,可以按照访问元素的不同方法分为直接访问、顺序访问和索引访问。

(1)直接访问
对可直接访问的线性群体,我们可以直接访问群体中的任何一个元素,而不必首先访问该元素之前的元素。例如,可以通过数组元素的下标直接访问数组中的任何一个元素。

(2)顺序访问
对顺序访问的线性群体,只能按元素的排列顺序从头开始依次访问各个元素。

(3)栈和队列
有两种特殊的线性群体是栈和队列。

①栈
栈是只能从一端访问的线性群体,可以访问的这一端称为栈顶,另一端称为栈底。对栈顶位置的标记称为栈顶指针,对栈底位置的标记称为栈底指针。向栈顶添加元素称为“压入栈”,删除栈顶元素称为“弹出栈”。栈中元素的添加和删除操作具有“后进先出”的特性。
栈的应用非常广泛,编译系统就是利用栈来实现函数调用时的参数传递和保留返回地址。编译器对高级语言中表达式的处理也可以通过栈来实现。用高级语言编写程序时,我们经常写出类似以下形式的表达式“

a/b+c*d;

编译系统在处理表达式的时候,需要确定运算次序。为此,需要建立两个栈:操作数栈和操作符栈,然后从左到右扫描表达式。

算法流程图如下所示:

在这里插入图片描述
栈处理表达式a/b+c*d的过程示意图如下所示:
在这里插入图片描述
②队列
和栈一样,队列也是一种特殊的线性群体。队列是只能向一端添加元素,从另一端删除元素的线性群体,可以添加元素的一端称为队尾,可以删除元素的一端称为队头。对队头位置的标记称为队头指针,对队尾位置的标记称为队尾指针。向队尾添加元素称为“入队”,删除队头元素称为“出队”。队列中元素的添加和删除操作具有“先进先出”的特性。队列的应用也很广泛,计算机操作系统用队列来处理打印作业的调度。下图是队列的逻辑示意图:
在这里插入图片描述


http://www.ppmy.cn/news/1026265.html

相关文章

37.二叉树的最近公共祖先

题目:给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* }*/public cl…

在idea运行python文件

在idea运行python文件 如果在idea运行python文件而没有弹出run的选项,则点击File->Settings…->Plugins,在里面搜索python,如果没有显示则在Maketplace进行搜索, 接着Install,然后restart

Vue.js从入门到精通:软件开发视频大讲堂

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 前言 随着Web应用程序的…

原子css 和 组件化css如何搭配使用

如果让你来实现下面这种页面,该怎么实现呢 原子化和css组件化方式写法,可以搭配起来使用,常用的css 原子css 比如 下面这些类似flex 布局,lstn curser-pointer 等常用的或者 具备一定规律性的padding margin 样式可以抽取为单独…

【C++】开源:glog日志库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍glog日志库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…

spring中时间格式化的两种方式

方法一:自己格式化 自己写一个格式化的类,把date类型的时间传进去: public class DateUtil {public static String formatDate(Date date){SimpleDateFormat simpleDateFormatnew SimpleDateFormat("yyyy-MM-dd HH:mm:ss");retur…

day-休息日 代码随想录算法训练营(19)周赛

6925.故障键盘 思路:第一题比较简单,输入i的时候把前输入的字符串翻转一遍。 class Solution { public:void swap(string&mid)//字符翻转函数{int left0,rightmid.size()-1;while(right>left){char tempmid[left];mid[left]mid[right];mid[righ…

多线程与高并发--------线程池

线程池 一、什么是线程池 在开发中,为了提升效率的操作,我们需要将一些业务采用多线程的方式去执行。 比如有一个比较大的任务,可以将任务分成几块,分别交给几个线程去执行,最终做一个汇总就可以了。 比如做业务操…