当前位置: 首页 > java >正文

数据结构(一)——线性表的顺序表示和实现

一、线性表的定义

由n(n>=0)个数据特性相同的元素构成的有限序列称为线性表,(n=0)的时候被称为空表。

一个数据元素可以是简单的一个数据,一个符号,也可以是复杂的若干个数据项的组合。

二、线性表的类型定义

s线性表是由n(n≥0)个相同类型的数据元素组成的有限序列,它是最基本最常用的一种线性结构。顾名思义,线性表就像是一条线,不会分叉。线性表有唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接前驱:除了最后一个元素外,每个元素都有唯一的直接后继,如图所示。

eg1: 线性表的两种存储结构为 链表 和 顺序表

eg2: 线性表是具有n个(数据元素)的有限序列(n>0)

三、顺序表定义

顺序表采用顺序存储方式,即逻辑上相邻的数据在计算机内的存储位置也是相邻的。顺序存储方式,元素存储是连续的,中间不允许有空,可以快速定位第几个元素,但是插入和删除时需要移动大量元素

eg1: 如果一个顺序表中第一个元素的存储地址是1000,每个元素占4个地址单元,那么第6个元素的存储地址是(1020)

eg2: 当需要随机查找线性表的元素时,宜采用(顺序表)作为存储结构

四、线性表的操作

1.初始化

初始化是指为顺序表分配一段预定义大小的连续空间,用elem记录这段间的基地址,当前空间内没有任何数据元素,因此元素的实际个数为0。假设我们已经预定义了一个最大空问数Maxsize,那么就用new分配大小为Maxsiz的空间,分配成功会返回空间的首地址,分配失败会返回空指针

2.创建

3.取值

顺序表中的任何一个元素都可以立即找到,称为随机存取方式。例如,要取第i个元素,只要i值是合法的(1≤i≤L.length),那么立即就可以找到该元素。由于下标是从0开始的,因此第i个元素,其下标为i-1,即对应元素为L.elem[i-1]

注意:位序是指第几个元素,位序和下标差1。

4.插入

在顺序表中第i个位置之前插入一个元素e,需要从最后一个元素开始,后移一位,直到把第i个元素也后移一位,然后把e放入第i个位置

eg1: 在一个长度为n的顺序表中,在第i个元素(1<=i<=n+1)之前插入一个新元素时须向后移动(n-i+1)个元素

5.删除

在顺序表中删除第i个元素,需要把该元素暂存到变量e中,然后从i+1个元素开始前移,直到把第几个元素也前移一位,即可完成删除操作。

http://www.xdnf.cn/news/4178.html

相关文章:

  • k8s术语之service
  • k8s pod request/limit 值不带单位会发生什么?
  • 浅谈 - GPTQ为啥按列量化
  • NGINX `ngx_http_browser_module` 深度解析与实战
  • 螺杆支撑座:数控机床高效稳定运行的关键支撑
  • MYSQL的DDL语言和单表查询
  • 完全免费的PDF电子发票批量辅助打印工具
  • vue3+ts继续学习
  • js var a=如果ForRemove=true,是“normal“,否则为“bold“
  • 2025-05-06 事业-独立开发项目-记录
  • 软件代码签名证书SSL如何选择?
  • C++复习2
  • Spring Boot之MCP Client开发全介绍
  • 二叉树—中序遍历—非递归
  • 两数之和(暴力+哈希查找)
  • Linux[Makefile]
  • ffmpeg录音测试
  • 爬虫程序中如何添加异常处理?
  • Vi/Vim 编辑器详细指南
  • Facebook如何运用AI实现元宇宙的无限可能?
  • DC-DC降压型开关电源(Buck Converter)设计中,开关频率(f sw​ )、滤波电感(L)和滤波电容(C out​ )的关系和取舍
  • uniapp 全局混入:监听路由变化,路由变化即执行
  • 嵌入式openharmony标准鸿蒙系统驱动开发基本原理与流程
  • openssl 生成自签名证书实现接口支持https
  • 【coze】手册小助手(提示词、知识库、交互、发布)
  • C++中指针使用详解(4)指针的高级应用汇总
  • 人工智能对人类的影响
  • 【Hive入门】Hive安全管理与权限控制:审计日志全解析,构建完善的操作追踪体系
  • kubeadm部署k8s
  • openwrt 使用quilt 打补丁(patch)