[数据结构与算法·C++] 笔记 2.1 线性表

线性结构

线性表

概念

二元组 B = ( K , R ) B=(K,R) B=(K,R)
K = a 0 , a 1 , . . . , a n − 1 K={a_0,a_1,...,a_{n-1}} K=a0,a1,...,an1 ( R = r R={r} R=r)

  • 有一个唯一的开始结点,它没有前驱,有一个唯一的直接后继
  • 一个唯一的终止结点,它有一个唯一的直接前驱,而没有后继
  • 其它的结点皆称为内部结点,每一个内部结点都有且仅有一个唯一的直接有前驱,也有一个唯一的直接有后继
  • < a i , a i + 1 > < a_i , a_{i+1}> <ai,ai+1> a i a_i ai a i + 1 a_{i+1} ai+1 的前驱, a i + 1 a_{i+1} ai+1 a i a_i ai 的后继
  • 前驱/后继关系 r r r,具有反对称性传递性

特点:

  • 均匀性: 虽然不同线性表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型长度
  • 有序性: 各数据元素在线性表中都有自己的位置,且数据元素之间的相对位置线性

分类:

  • 按复杂程度划分

    • 简单的: 线性表、栈、队列、散列表
    • 高级的: 广义表、多维数组、文件…
  • 按访问方式划分

    • 直接访问型(direct access)
    • 顺序访问型(sequential access)
    • 目录索引型(directory access)

    请添加图片描述

  • 按操作划分 - 线性表 - 所有表目都是同一类型结点的线性表

    • 不限制操作形式

  • 根据存储的不同分为:

    • 顺序表,链表

    • 栈(LIFO, Last In First Out)

    • 栈

      • 插入和删除操作都限制在表的同一端进行(后进先出)

    • 队列(FIFO, First In First Out)

      • 插入操作在表的一端删除操作在另一端(先进先出)

三个方面

线性表的逻辑结构

  • 主要属性
    主要属性

    • 线性表的长度
    • 表头(head)
    • 表尾(tail)
    • 当前位置(current position)

线性表的存储结构

  • 顺序表
    顺序表

    • 按索引值从小到大存放在一片相邻的连续区域
    • 紧凑结构,存储密度为 1
  • 链表

    • 单链表
      单链表

    • 双链表
      双链表

    • 循环链表
      循环链表

线性表运算

  • 建立线性表
  • 清除线性表
  • 插入一个新元素
  • 删除某个元素
  • 修改某个元素
  • 排序
  • 检索

线性表类模板

template <class T> class List {void clear();// 置空线性表bool isEmpty();// 线性表为空时,返回 truebool append(const T value);// 在表尾添加一个元素 value, 表的长度增 1bool insert(const int p, const T value);// 在位置 p 上插入一个元素 value, 表的长度增 1bool delete(const int p);// 删除位置 p 上的元素, 表的长度减 1bool getPos(int& p, const T value);// 查找值为 value 的元素并返回其位置bool getValue(const int p, T& value);// 把位置 p 元素值返回到变量 valuebool setValue(const int p, const T value);// 用 value 修改位置 p 的元素值
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148449.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

了解你的GPU:深入探讨AMD SMI

Getting to Know Your GPU: A Deep Dive into AMD SMI — ROCm Blogs 2024年9月17日 作者&#xff1a;Matt Elliott 对于使用AMD硬件的系统管理员和高级用户来说&#xff0c;性能优化和高效的资源监控至关重要。AMD系统管理界面命令行工具amd-smi正是为了解决这些需求而设计的。…

uni-app功能 1. 实现点击置顶,滚动吸顶2.swiper一个轮播显示一个半内容且实现无缝滚动3.穿透修改uni-ui的样式

uni-app项目中遇到的功能 文章目录 uni-app项目中遇到的功能一、实现点击置顶&#xff0c;滚动吸顶、1.1、scroll-view设置不生效的原因和解决办法1.2 功能代码 二、swiper一个轮播显示一个半内容且实现无缝滚动三、穿透修改uni-ui的样式 一、实现点击置顶&#xff0c;滚动吸顶…

基于STM32残疾人辅助行走系统

要么是家人陪伴&#xff0c;要么是类似导盲犬的动物辅助&#xff0c;家人还有事要做&#xff0c;不一定实时在场&#xff0c;而动物辅助也可能会出现新的问题&#xff0c;威胁残疾人身体安全。因此利用现代计算机技术、传感器检测设备和物联网技术设计这一款辅助残疾人行走的智…

【FPGA】FPGA芯片结构

目录 1 可编程输出/输出单元&#xff08;IOB&#xff09;2 可配置逻辑块&#xff08;CLB&#xff09;3 数字时钟管理模块&#xff08;DCM&#xff09;4 嵌入式块存储器&#xff08;BRAM&#xff09;5 布线资源6 内嵌功能模块&#xff08;专用IP单元&#xff09;6.1 PLL&#xf…

MISC - 第一天(stegsolve图片隐写解析器、QR research、binwalk,dd文件分离,十六进制文件编辑器)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;最近更新Buuctf在线测评中的MISC杂项内容 介绍 BUUCTF:https://buuoj.cn/ &#xff0c;整合了各大 CTF 赛事题目&#xff0c;类型丰富&#xff0c;涵盖了Web 安全、密码学、系统安全、逆向工程、代码审计等多个领域 …

C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿&…

数据库 MySQL 是否需要容器化?

容器的定义&#xff1a;容器是为了解决“在切换运行环境时&#xff0c;如何保证软件能够正常运行”这一问题。 目前&#xff0c;容器和 Docker 依旧是技术领域最热门的词语&#xff0c;无状态的服务容器化已经是大势所趋&#xff0c;同时也带来了一个热点问题被大家所争论不以…

2024PHP彩虹工具网源码一个多功能工具箱程序支持72种常用站长和开发等工具

安装&#xff1a; PHP>7.4 伪静态设置Thinkphp 设置/public为网站运行目录 访问你的域名/install进行安装即可 安装扩展 sg11 &#xff0c;fileinfo &#xff0c; ionCube 常用功能 站长工具&#xff1a;ICP备案查询、IP地址查询、域名Whios查询、腾讯域名拦截查询、Mysql…

基于yolov5的中国交通标志TT100K检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的中国交通标志TT100K检测系统是一种利用深度学习技术实现高效、准确交通标志识别的系统。该系统采用YOLOv5作为核心检测算法&#xff0c;凭借其速度快、准确性高的特点&#xff0c;在实时交通标志识别领域展现出显著优势。 TT100K数据集作为该系统的…

调用本地大模型服务出现PermissionDeniedError的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

ICM20948 DMP代码详解(38)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;37&#xff09; 上一回继续解析inv_icm20948_set_slave_compass_id函数&#xff0c;解析了第3段代码&#xff0c;本回解析接下来的代码。为了便于理解和回顾&#xff0c;再次贴出该函数源码&#xff0c;在EMD-Core\so…

PMP--二模--解题--71-80

文章目录 13.干系人管理--干系人登记册--记录干系人的身份信息、评估信息、干系人分类。识别完干系人更新干系人登记册。71、 [单选] 一名初级项目经理被指派到一个新启动的项目&#xff0c;高级项目经理指示该初级项目经理去识别在项目中享有既得利益的人员。高级项目经理让初…

Python OpenCV精讲系列 - 高级图像处理技术(十)

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;Python OpenCV精讲⚡️⚡️&#x1f496;&#x1f496; 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计&#xff0c;从基础概念入手&#xff0c;逐步深入到图像处理、特征检测、物体识…

社区团购的创新与变革——融合开源链动 2+1 模式、AI 智能名片及 S2B2C 商城小程序

摘要&#xff1a;本文从信息流、资金流、物流角度深入分析社区团购的特点&#xff0c;探讨其如何避免传统线下中心零售的高展示成本与传统电商的高交付成本。同时&#xff0c;引入开源链动 21 模式、AI 智能名片及 S2B2C 商城小程序等创新元素&#xff0c;阐述它们为社区团购带…

Card View 卡片视图

Goto 数据网格和视图入门 Card View 卡片视图 The Card View displays data records as cards, arranged down and then across. Card fields are always arranged in a single column. The Card View is represented by the CardView class. Card View &#xff08;卡片视图…

k8s中pod的创建过程和阶段状态

管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录&#xff0c;也可以用证书登录 k8s只能用证书登录 谁拿到这个证书&#xff0c;谁就可以管理集群 在k8s中&#xff0c;所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以…

计算机毕业设计springboot+vue高校教学实施评教系统springcloud微服务分布式

目录 功能和技术介绍系统实现截图开发核心技术介绍&#xff1a;使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取 功能和技术介绍 本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。使用vue的本质是SpringFramework【IoC&am…

linux强制关闭再启动后zookeeper无法启动

1、若开启了zkserver就先关闭zkserver 查看zkserver是否启动 sh zkServer.sh status关闭zkServer sh zkServer.sh stop2、更改conf/zoo.cfg 将这里的启动端口改为2183 3、启动zkServer sh zkServer.sh start4、以2183端口启动zkCli zkCli.sh -server 127.0.0.1:2183这样启…

华为OD机试 - N个选手比赛前三名、比赛(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

恶意AI大模型的兴起将改变网络安全

LLM 的恶意版本&#xff08;如 ChatGPT 的黑暗变体&#xff09;的兴起正在通过使用更复杂和自动化的攻击来升级网络战。 这些模型可以生成令人信服的网络钓鱼电子邮件、传播虚假信息并制作有针对性的社会工程消息。 所有这些非法功能都对在线安全构成了重大威胁&#xff0c;并加…