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

数据结构1:线性表的顺序存储的定义以及基本操作

一 线性表的定义

主要知识框架

 线性表(List):是由零个或多个相同数据类型的数据元素组成的有限数列

        一般表示形式:L = (a1,a2,... ,ai,... ,an)

首先它是一个序列。元素之间是存在顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素,其他元素都有且只有一个前驱和后继。如果将线性表记为L = (a1,a2,... ,ai,... ,an)ai+1是ai的后继元素,ai-1是ai的前驱元素,a1有且只有一个直接后继,an有且只有一个前驱。

二 线性表顺序存储的定义

顺序表:一组连续的内存单元依次存储线性表的各个元素,逻辑上相邻的元素,实际物理空间也是连续的。

从底层上看,顺序表通常借助数组来实现顺序存储结构,因为数组的连续内存为顺序存储提供了帮助。

线性表的顺序存储的结构代码如下

#define MAXSIZE 20/*数组长度*/
typeof struct{int data[MAXSIZE];/*数组,存储数据元素*/int length;       /*线性表当前的长度*/
}SqList;

由此知,顺序表结构的两个核心要素:

数据元素本身:数组存储线性表的具体数据。

表长信息:length记录前线性表中元素的实际个数,用于区分数组中已使用的空间和未使用的空间。

三 顺序存储结构的创建操作

void initList(SqlList *L){//由于数组大小在结构体中已经确定,只需初始化顺序表长度为0即可L -> length = 0;
}

四 顺序存储结构的添加元素操作

插入操作的具体实现思路

1 判断插入位置是否合法

2 判断插入后长度是否足够

3 遍历最后一个元素开始到插入元素的位置,依次向后移动一个位置

4 将要插入的元素填入

5 顺序表长度+1

int insert(SqlList *L , int pos , int e){if(i < 1 || i > L -> length + 1){//插入元素的位置不合法return 0;}if(L -> length == MAXSIZE){//顺序表空间已满return 0;}if(pos <= L -> length){//插入元素不在表尾for(int i = L -> length - 1 ; i >= pos - 1 ; i--){//遍历操作L -> data[i+1] = L -> data[i];}L -> data[pos-1] = e;L -> length++;}return 1;
}

四 顺序存储结构的删除操作

删除操作的具体实现操作思路:

1 判断删除位置是否合法

2 取出删除的元素

3 从删除元素的位置开始遍历到最后一个元素的位置,分别将其向前移动一个位置

4 表长-1

int delete(SqlList *L , int pos , int *e){if(L -> length == 0){return 0;}if(i < 1 || i > L -> length){//删除的位置不合法return 0;}*e = L -> data[pos-1];if(pos < L -> length){for(int i = pos ; i <= L -> length - 1 ; i++){//将删除位置后继元素删除L -> data[i-1] = L -> data[i]; }}L -> length--;return 1;
}

http://www.dtcms.com/a/277118.html

相关文章:

  • [Linux 入门] Linux 引导过程、系统管理与故障处理全解析
  • Python 数据建模与分析项目实战预备 Day 4 - EDA(探索性数据分析)与可视化
  • ansible自动化部署考试系统前后端分离项目
  • 09.获取 Python 列表的首尾元素与切片技巧
  • 论文Review 3DGSSLAM GauS-SLAM: Dense RGB-D SLAM with Gaussian Surfels
  • OkHttp SSE 完整总结(最终版)
  • JAVA学习笔记 首个HelloWorld程序-002
  • javaweb-day10案例
  • Linux 系统——管理 MySQL
  • 入职华为od一个月的感受
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 44(题目+回答)
  • 鸿蒙项目构建配置
  • TDengine 使用最佳实践(2)
  • SpringBoot-23-企业云端开发实践之Vue框架组件化开发和第三方组件element-ui
  • 谷歌推出Vertex AI Memory Bank:为AI智能体带来持久记忆,支持连续对话
  • 【源力觉醒 创作者计划】文心开源大模型ERNIE-4.5私有化部署保姆级教程与多功能界面窗口部署
  • zotero自由编辑参考文献格式(2)
  • Dubbo + Spring Boot + Zookeeper 快速搭建分布式服务
  • spring--xml注入时bean的property属性
  • 20250713-`Seaborn.pairplot` 的使用注意事项
  • jenkins部署前端vue项目使用Docker+Jenkinsfile方式
  • 【PTA数据结构 | C语言版】字符串插入操作
  • java.net.InetAddress
  • 学习笔记-Excel统计分析——描述统计量的计算
  • SpringBoot单元测试类拿不到bean报空指针异常
  • 算法 - 蛇形矩阵-上三角
  • 2.3 单链表的应用
  • 图像读取与模型保存--基于NWPU-RESISC45数据集的图像二分类实战
  • stm32f103c8t6移植freeRTOS内存不足报错问题的解决办法
  • 浏览器渲染原理与性能优化全解析