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

数据结构之----线性表其一---顺序表

线性表需满足的条件:

1,除了第一个和最后一个元素,中间的每个元素都有一个前驱和后继。

2,第一个元素只有一个后继。

3,最后一个元素只有一个前驱。

顺序表的基本操作:

(1)线性表初始化

typedef struct ArrayList
{int *data;//指针模拟声明数组int len;//表长
}Array;

(2)追加数据

//追加数据k
Array appendData(Array a,int k){if(a.len == maxx){printf("顺序表已满\n");return a;}a.data[a.len] = k;a.len++;//指向下一个位置return a;
}

(3)指定位置添加数据

//在指定位置添加数据k
Array addData(Array a,int index,int k){if(a.len == maxx){printf("顺序表已满\n");return a;}//将元素往后移动for(int i=a.len-1;i>=index;i--){a.data[i+1] = a.data[i];}//添加a.data[index] = k;return a;
}

(4)按顺序输出数据

//按顺序输出数据
void printData(Array a)
{if(a.len == 0){printf("顺序表为空\n");}for(int i=0;i<a.len;i++){printf("%d",a.data[i]);}
}

(5)查找数据

//查找数据k所在的位置
int FindData(Array a,int k){int i;for(int i=0;i<a.len;i++){if(a.data[i] == k){return i;}}return -1;//不存在返回-1
}

(6)删除数据

//删除数据k
Array deleteData(Array a,int k)
{int kk = FindData(a,k);if(kk != -1){for(int j=kk;j<a.len;j++){a.data[j] = a.data[j+1];}a.len--;return a;}else{return a;}}

(7)更改数据

//更改数据old为k
Array changeData(Array a,int old,int k){int kk = FindData(a,old);if(kk != -1){a.data[kk] = k;return a;}else{return a;}
}

顺序表的优缺点:

优点:支持随机读取   首地址+偏移量

存储密度大

缺点:插入,删除太过繁琐

缺点大于优点

适用于:数据稳定(插入和删除操作少)的相关场景,比如说教务系统

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

相关文章:

  • 弱电太累,职业发展遇瓶颈?那一定不要错过这个技能!
  • 单片机(89C51)---基础知识
  • 阅兵时刻,耐达讯自动化RS485 转 Profinet 网关助力矿山冶金连接迈向辉煌
  • 【大数据技术实战】Flink+DS+Dinky 自动化构建数仓平台
  • 嵌入式 Linux 启动流程详解 (以 ARM + U-Boot 为例)
  • 【ShiMetaPi M4-R1】上手:RK3568B2|开源鸿蒙(OpenHarmony) 应用开发快速上手
  • Vue+Echarts饼图深度美化指南:打造卓越数据可视化体验
  • 深入理解 Java 集合框架:底层原理与实战应用
  • 0元部署私有n8n,免费的2CPU+16GB服务器,解锁无限制的工作流体验
  • ruoyi vue element 实现点击、返回首页收起已经展开的菜单栏
  • SpringBoot 整合 Kafka 的实战指南
  • 《用 Django 构建博客应用:从模型设计到文章管理的全流程实战》
  • 2025年11月GIS应用技术测评考试(附考试资料分享)
  • 【开题答辩全过程】以 校园安全管理系统设计与实现为例,包含答辩的问题和答案
  • Django 命令大全:从入门到精通,开发者必备指南
  • Spring Boot 事务失效的八大原因及解决方案详解
  • 什么是科技成果鉴定测试?成果鉴定测试报告带给企业什么好处?
  • 【54页PPT】基于DeepSeek的数据治理技术(附下载方式)
  • 数据库高可用全方案:Keepalived 故障切换 + LVS (DR) 模式 + MariaDB 主主同步实战案例
  • 深度学习----卷积神经网络的数据增强
  • docker 安装 redis 并设置 volumes 并修改 修改密码(三)
  • 工厂设备物联平台_HawkEye智能运维平台_璞华大数据
  • mac idea 配置了Gitlab的远程地址,但是每次pull 或者push 都要输入密码,怎么办
  • 开源与闭源的再对决:从Grok到中国力量,AI生态走向何方?
  • LeetCode 面试经典 150_矩阵_有效的数独(34_36_C++_中等)(额外数组)
  • Dify 从入门到精通(第 73/100 篇):Dify 的高级 RAG 优化(高级篇)
  • Vue 3 WebSocket通信方案:从原理到实践
  • net9 aspose.cell 自定义公式AbstractCalculationEngine,带超链接excel转html后背景色丢失
  • 创建Spring MVC和注解
  • iptables 和 ip route