线性表的定义和基本操作(三)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 线性表的定义和理解,和一些基本的操作,并且有例题

定义

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,一般表示为:L = (a1,a2,a3,...,an)

注:

  • 所有的相同的数据类型意味着每个数据元素所占空间一样大
  • 各个数据元素有顺序而且是有限的
  • ai是线性表中的第i个元素线性表的位序
  • a1是表头元素,an是表尾元素

线性表的基本操作

  • InitList(&L):初始化表,构造一个空的线性表L,分配内存空间
  • DestroyList(&L):销毁操作,销毁线性表,并释放线性表L所占用的内存空间
  • ClearList(&L):将已经存在的线性表L重置为空表
  • ListInsert(&L,i,e):插入操作,在表L中的第i个位置上插入指定元素e
  • ListDelete(&L,i,&e):删除表L中的第i个位置的元素,并用e返回删除元素的值
  • LocateElem(L,e,compare()):按值查找操作:在表L中查找具有给定关键字值的元素,compare()数据元素判定函数
  • GetElem(L,i):按位查找操作:获取表L中的第i个位置的元素的值
  • Length(L):求表长,返回线性表L的长度,即L中数据元素的个数
  • PrintList(L):输出操作,按前后顺序输出线性表L的所有元素值
  • Empty(L):判空操作,若L为空表,则返回true,否则返回false

数据结构中的引用参数 &

听得最多解读和贴近生活的就是:这就像是在一栋楼房中找人,&是按入住人的名字找人,而是按门牌号找人, 虽然同是找人,但还是有本质上的区别的.当且仅当门牌号对应的人与按入住人姓名找的人相同的时候, 找到的人才是同一个人.

用一段程序来理解,没有加入&的时候:

#include<stdio.h>
void test(int x){
  x=1024;
  printf("test函数内部 x=%d\n",x);
} 
int main(){
  int x=1;
  printf("调用test之前 x=%d\n",x);
  test(x);
  printf("调用test之后 x=%d\n",x);
}

运行后的结果为:

网络异常,图片无法展示
|

如果我们把函数test稍稍修改:

void test(int & x)

这时候调用test后的x就被修改了

网络异常,图片无法展示
|

例题

用线性表LA和LB分别表示两个有限集合A、B,现在需要求一个新的集合 A U B

分析:求取集合 A U B及是A、B的并集,即将集合B的元素插入到A的集合,但是不能插入含有A集合相同的元素。

实现:

  1. 通过Length(L)判断线性表的长度
  2. 通过GetElem(L,i)取线性表Lb中的i个元素赋给e
  3. 判断La中不存在e相同的数据元素,插入
void union(List &La, List Lb){
  La_len=Length(La);
  Lb_len=length(Lb);
  for(int i=1; i<=Lb_len; i++){
    GetEmel(Lb,i,e);
    if(!LocateElem(La,e,equal)){
      ListInsert(La,++La_len,e);
    }
  }
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
数据可视化
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
20815 2
|
缓存 Java 数据库
后端技术探索:从基础架构到高效开发的实践之路
【10月更文挑战第7天】 在现代软件开发中,后端技术是支撑应用运行的核心。本文将探讨如何从后端的基础架构出发,通过一系列高效的开发实践,提升系统的性能与可靠性。我们将深入分析后端框架的选择、数据库设计、接口开发等关键领域,并提供实用的代码示例和优化策略,帮助开发者构建更稳定、高效的后端系统。通过这篇文章,读者将获得关于后端开发的全面理解和实践指导,从而更好地应对复杂项目需求。
329 0
|
7月前
|
Kubernetes 安全 应用服务中间件
IngressNightmare:Ingress Nginx 再曝5个安全漏洞,可接管你的 K8s 集群
是否还记得 2022 年 K8s Ingress Nginx 披露了的 3 个高危安全漏洞(CVE-2021-25745, CVE-2021-25746, CVE-2021-25748),并在那一年宣布停止接收新功能 PR,专注修复并提升稳定性。
|
12月前
|
供应链
八大战略助力供应链应对地缘政治挑战与七大新兴风险
八大战略助力供应链应对地缘政治挑战与七大新兴风险
|
数据采集 存储 XML
Scrapy框架实现数据采集的详细步骤
本文介绍了使用Scrapy框架从宁波大学经济学院网站爬取新闻或公告详情页内容的过程,包括创建Scrapy项目、编写爬虫规则、提取所需信息,并最终将数据存储到Excel文件中的方法和步骤。
270 2
Scrapy框架实现数据采集的详细步骤
|
算法 数据安全/隐私保护
星座图整形技术在光纤通信中的matlab性能仿真,分别对比标准QAM,概率整形QAM以及几何整形QAM
本文介绍了现代光纤通信系统中的星座图整形技术,包括标准QAM、概率整形QAM和几何整形QAM三种方法,并对比了它们的原理及优缺点。MATLAB 2022a仿真结果显示了不同技术的效果。标准QAM实现简单但效率有限;概率整形QAM通过非均匀符号分布提高传输效率;几何整形QAM优化星座点布局,增强抗干扰能力。附带的核心程序代码展示了GMI计算过程。
692 0
|
开发工具 git
解决Git push提交时Permission denied(publickey).Could not read from remote...的问题
解决Git push提交时Permission denied(publickey).Could not read from remote...的问题
905 0
|
缓存 UED 网络架构
网站404该怎么解决
网站404错误通常表示用户尝试访问的网页不存在或无法找到
1716 0
|
JavaScript
一文搞懂Vue3中如何使用ref获取元素节点?
一文搞懂Vue3中如何使用ref获取元素节点?
1000 1