C语言的线性表之顺序表怎么用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章给大家分享的是有关C语言的线性表之顺序表怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。线性表 —— 顺序表 (C语言)概念线性表的顺序表示指的是用一组地址连续
千家信息网最后更新 2025年01月19日C语言的线性表之顺序表怎么用
这篇文章给大家分享的是有关C语言的线性表之顺序表怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
线性表 —— 顺序表 (C语言)
概念
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表中的数据元素,这种表示也称做线性表的顺序储存结构或顺序映像。通常,称这种存储结构的线性表为顺序表 (Sequential List) 。其特点是,逻辑上相邻的数据元素,其物理次序也是相邻的。
1. 顺序表的储存结构
#include#include #include #define MAX_SIZE 1000 //顺序表能储存的最大数值typedef int DATA; //抽象化int类型typedef struct _List{ DATA *data; int length;} SeqList;#include #include #include #define MAX_SIZE 1000 //顺序表能储存的最大数值typedef int DATA; //抽象化int类型typedef struct _List{ DATA *data; int length;} SeqList;
2. 顺序表的基本操作
//初始化顺序表SeqList* initList() { SeqList* list = malloc(sizeof(SeqList)); assert(list != NULL); list->data = malloc(MAX_SIZE * sizeof(DATA)); list->length = 0; //顺序表的初始长度为0 assert(list->data != NULL); return list;}
2.1 顺序表的插入
头插法:
1.将表中所有数据元素向后移一位
2.将数据元素插入第 0 位
3.长度 length + 1
图解
代码
void insertByHead(SeqList* list, DATA data){ if (list->length >= MAX_SIZE){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } for (int i = list->length; i > 0; i--){ list->data[i] = list->data[i-1]; } list->data[0] = data; list->length++;}
指定位置插入法:
1.将第 index 位与它后面的所有数据元素向后移动一位
2.将数据元素插入第 index 位
3.长度 length + 1
图解
代码
void insertByIndex(SeqList* list, int index, DATA data){ if ((index < 0 || index >= list->length) && list->length >= MAX_SIZE){ printf("输入的index值错误或顺序表已满无法插入...\n"); return; //跳出函数 } for (int i = list->length; i > index; i--) { list->data[i] = list->data[i - 1]; } list->data[index] = data; list->length++;}
尾插法:
1.将数据插入第 length 位
2.长度 length + 1
图解
代码
void insertByTail(SeqList* list, DATA data){ if (list->length >= MAX_SIZE){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } list->data[list->length++] = data;}void insertByTail(SeqList* list, DATA data){ if (list->length >= MAX_SIZE){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } list->data[list->length++] = data;}
2.2 顺序表的查找
步骤
通过数值逐个比对,若表中存在相同元素则返回较前面的元素位置。
代码
int find(SeqList* list, DATA data){ for (int i = 0; i < list->length; i++) { if (list->data[i] == data) { return i; } } return -1;}
2.3 顺序表的删除
通过值删除元素
1.找到值对应的元素下标 index
2.将第 index + 1 位与它后面的所有元素向前移动一位
3.长度 length - 1
图解
代码
void deleteByData(SeqList* list, DATA data) { if (list->length == 0){ printf("表为空,无需进行删除...\n"); } int ret = find(list, data); if (ret != -1) { for (int i = ret; i < list->length - 1; i++) { list->data[i] = list->data[i + 1]; } list->length--; } else{ printf("该数据不存在,无法删除...\n"); }}
通过索引删除元素
1.将第 index + 1 位与它后面的所有元素向前移动一位
2.长度 length - 1
图解
代码
void deleteByIndex(SeqList* list, int index) { if (list->length == 0){ printf("表为空,无需进行删除...\n"); } if (index >= list->length){ printf("索引位置大于表的总长度...\n"); return; } for (int i = index; i < list->length - 1; i++) { list->data[i] = list->data[i + 1]; } list->length--;}
感谢各位的阅读!关于"C语言的线性表之顺序表怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
顺序
元素
数据
线性
长度
代码
函数
语言
位置
数值
结构
存储
移动
最大
内容
更多
篇文章
类型
索引
不错
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发招聘2017
河北常规软件开发资格
软件开发的疑难问题
黄冈科技职业学院互联网金融
软件开发可以使用系统默认字体吗
信息网络安全专业大学
通州区网络软件开发哪家便宜
软件开发以用户需求为导向
诛仙一销售数据库
mongodb数据库or
网络安全的高手
沈阳新华互联网科技学校微信
flink读取数据库数据
网络安全法亮点之重视个人信息
昭通市委网络安全
什么是网络安全防护工作红线
剑网三手游服务器失败
数据库学了有用么
浙江云上网络技术有限公司
思科网络技术试题库
金铲铲之战进不去服务器已满
安徽交友软件开发靠谱吗
浪潮超融合服务器虚拟机管理
未获取到数据库
艾悦网络技术服务部
天津市教委网络安全领导小组
郑州软件开发app公司哪家好
齐粳4号水稻数据库
邹平供应链erp软件开发公司
sql数据库维护需要掌握什么