顺序表的类型定义与基本操作
顺序表的类型定义与基本操作
顺序表主要指数组,顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中逻辑相邻的元素也物理相邻,采用顺序存储结构的线性表通常称为顺序表。
1. 顺序表的类型定义
typedef struct
{ElemType *elem; // 存储空间的基地址int length; // 当前长度
}SqList; // 顺序表的结构类型为 SqList
2. 顺序表的基本操作
顺序表的操作不多,但可以通过各种操作之间的组合形成新的操作(如合并)。以下给出 5 种基本操作:
(1) 顺序表的初始化
(2) 顺序表的查找
(3) 顺序表的插入
(4) 顺序表的删除
(5) 顺序表的销毁
算法1:顺序表的初始化
【代码实现】
Status InitList(SqList &L) // 顺序表的插入
{L.elem = new ElemType[MAXSIZE];if (!L.elem) exit(OVERFLOW);L.length = 0;return OK;
}
算法2:顺序表的查找
【代码实现】
Status LocateElem(SqList L, ElemType Info) // 顺序表的查找(默认待查找类型为字符串/字符数组)
{for (int i = 0; i < L.length; i++){if (!strcmp(L.elem[i], Info)) // strcmp 函数在比较结果相等时返回 0return OK;if (i == L.length - 1)return ERROR;}
}
算法3:顺序表的插入
【代码实现】
Status ListInsert(SqList &L, int i, ElemType Info) // 顺序表的插入
{if ((i < 1) || (i > L.length)) return ERROR; // 插入位置不合法if (L.length == MAXSIZE) return ERROR; // 顺序表已满for (int j = L.length - 1; j >= i - 1; j--) // 插入位置后的元素后移L.elem[j + 1] = L.elem[j];L.elem[i - 1] = Info; // 待插入元素进入顺序表++L.length;return OK;
}
算法4:顺序表的删除
【代码实现】
Status ListDelete(SqList &L, int i) // 顺序表的删除
{if ((i < 1) || (i > L.length)) return ERROR; // 删除位置不合法for (int j = i; j < L.length; j++) // 删除位置后的元素前移L.elem[j - 1] = L.elem[j];--L.length;cout << endl;return OK;
}
算法5:顺序表的销毁
【代码实现】
Status DestroyList(SqList &L) // 销毁顺序表
{if (L.elem) delete[] L.elem;L.length = 0;return OK;
}
顺序表的类型定义与基本操作相关推荐
- 线性表【01】线性表的类型定义
线性表简介 线性结构是一个数据元素的有序(次序)集合. 线性结构的基本特征为: 1. 集合中必存在唯一的一个"第一元素": 2.集合中必存在唯一的一个 "最后元素&quo ...
- 2.1线性表的类型定义
列2-1:假设利用两个线性表LA和LB分布表示两个集合A和B(即线性表中的数据元素即为集合中的元素),现要求一个新的集合A=AUB.这就要求对线性表作如下操作,扩大线性表LA,将存在于线性表LB中而不 ...
- 顺序表的定义及基本操作
目录 顺序存储类型描述 动态存储类型描述 建立顺序表 顺序表的插入操作 顺序表的删除操作 按指查找(顺序查找) 顺序存储类型描述 #define MaxSize 50 //定义线性表的最大长度 typ ...
- 顺序表基本操作函数总结
/*************************************************************************************/ /* 顺序表基本操作 ...
- 数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o
目录 前言 一.顺序表的定义 二.顺序表的初始化 三.顺序表的建立 四.顺序表的输出 五.顺序表的逆序输出 六.顺序表的插入操作 七.顺序表的删除操作 八.顺序表的按位和按值查找 基本操作的完整代码 ...
- 顺序表(线性表的顺序存储)---C语言版
目录 顺序表 一.顺序表的定义 二.顺序表上基本操作的具体实现 1.`InitList_Sq(*L)`:初始化表.构造一个空的顺序表. 分类一:主函数里声明的是一个指向顺序表的指针 分类二:主函数里声 ...
- 顺序表的插入和删除操作
C语言线性表的插入和删除操作 C语言数据结构的学习之线性表的插入与删除操作 C语言线性表的插入和删除操作 一.插入操作 插入操作的时间复杂度分析: 二.删除操作 删除操作的时间复杂度分析: 查找操作 ...
- 数据结构--顺序表--史上最全--王道考研笔记
顺序表 定义 顺序表采用顺序存储方式,是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系 第n个元素 第n个元素的存放位置 ...
- 顺序表中删除最小值元素
2019.6.19 数据结构2.2.3 综合应用题(1) 题目: 从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值,空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行 ...
- 线性表的顺序储存(顺序表的c++实现)
顺序表的定义 :数据结构在内存中的表示通常有两种形式,即顺序储存表示和链式储存表示.线性表的顺序储存是指用一组地址连续的储存单元依次储存线性表的数据元素,我们把这种储存形式储存的线性表叫做顺序储存.线 ...
最新文章
- python基本使用-python基本用法笔记合集
- 软件架构设计(第2版)——程序员向架构师转型必备
- dos下实现延迟功能
- 联想n308 android 一体机,附文:N308设计回顾_联想 N308_一体电脑评测-中关村在线...
- WeChat小程序报错Module not found: Can‘t resolve ‘umtrack-alipay‘ in
- mybatis_user_guide(5) 动态 SQL
- MySQL主从同步延迟
- 诺基亚将于10月26日发布首款WindowsPhone7手机
- 20145235 《Java程序设计》第8周学习总结
- C语言单片机把2000H清零,清零程序实验报告.doc
- Python 黑帽子 netcat工具python3实现
- sola染毒文件恢复工具
- autocad.net 画多段线_VB.net 在AutoCAD中绘制矩形云线
- C# 委托代理动态的方法
- 九爷带你了解 zabbix 报警机制
- 编译原理逆波兰式实验java_【实验三】—— 逆波兰式生成实验报告
- laravel 微信授权登录
- 2016计算机学科夏令营上机考试C:反反复复(字符串处理)
- 【soft6星评论】中台只是一种说法,中小企业主们要擦亮眼睛
- [Git Rebase] Git Rebase 合并提交(命令操作 SourceTree 操作)