顺序表的定义和基本操作
1、顺序表的定义
顺序表,即线性表的顺序存储,用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的两个元素在物理位置上也相邻。
注意:线性表中元素的位序是从1开始的,而数组中元素的下标是从0开始的。
假定线性表的元素类型为ElemType,线性表的顺序存储可以是静态的,也可以是动态的。
//静态分配
#define maxSize 100; //定义顺序表的最大长度
typedef struct{Elemtype data[maxSize]; //顺序表的元素int length; //顺序表的当前长度
}Sqlist; //顺序表的类型定义
//动态分配
#define InitSize 100 //表长度的初始定义
typedef struct{Elemtype *data; //动态分配数组的指针int maxSize, length; //数组的最大容量和当前长度
}Sqlist; //动态分配数组顺序表的类型定义
2、顺序表的基本操作
(1)插入操作
//在顺序表L的第i(1<=i<=L.length+1)个位置插入新元素e
bool ListInsert(Sqlist &L, int i, Elemtype e){if(i<1 || i>L.length+1) //判断i的位置是否有效return false;if(L.length >= maxSize) //如果存储空间已满,不能插入return flase;for(int j=L.length; j>=i; j--){ //将第i个元素及之后的元素往后移L.data[j] = L.data[j-1];}L.data[i-1] = e; //在i的位置上插入eL.length ++; //线性表的长度加1return true;
}
线性表插入算法的平均时间复杂度为O(n)
(2)删除操作
//删除顺序表L的第i(1<=i<=L.length+1)个位置上的元素,并将被删除的元素用引用变量e返回
bool ListDelete(Sqlist &L, int i,ElemType &e){if(i<0 || i>L.length) //判断i的位置是否有效return false;e = L.data[i-1]; //将被删的元素赋值给efor(int j=i; j<L.length; j++){ //将第i个元素后的元素往前移L.data[j-1] = L.data[j];}L.length --; //线性表的长度减1return true;
}
线性表删除算法的平均时间复杂度为O(n)
(3)按值查找(顺序查找)
//在顺序表L中查找第一个元素值等于e的元素,并返回其位序
int LocateElem(Sqlist L, Elemtype e){int i;for(i=0; i<L.length; i++){if(L.data[i] == e){return i+1; //下标为i的元素值等于e,返回其位序i+1}}return 0; //没有找到,说明查找失败,返回0
}
线性表按值查找算法的平均时间复杂度为O(n)
顺序表的定义和基本操作相关推荐
- 数据结构(C语言)顺序表的定义及基本操作
顺序表的定义及基本操作 一.数据结构:顺序表的定义,创建,基本运算,实现 二.全部代码 定义顺序表 #include<stdio.h> #include<malloc.h> # ...
- 顺序表的定义及基本操作
目录 顺序存储类型描述 动态存储类型描述 建立顺序表 顺序表的插入操作 顺序表的删除操作 按指查找(顺序查找) 顺序存储类型描述 #define MaxSize 50 //定义线性表的最大长度 typ ...
- 顺序表的建立和基本操作
顺序表的建立和基本操作 本题要求实现顺序表的基本操作. 函数定义:初始化 Status InitList(SqList *L); 插入操作 Status ListInsert(SqList *L,in ...
- 数据结构(C语言)——线性表(定义,基本操作)
数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...
- C语言顺序表的定义以及各类操作
#include <stdio.h> #include <string.h> #include <stdlib.h>#define maxsize 1024 typ ...
- 稀疏矩阵的三元组顺序表存储表示及基本操作
/* Name: 稀疏矩阵的三元组顺序表存储表示及基本操作 Copyright: Author: 巧若拙 Date: 27-10-14 21:28 Description: ---------- ...
- 数据结构之【线性表】(顺序表、链表的基本操作实现)
概念 线性表:是N个数据元素的有限序列. 顺序表:用一组地址连续的存储单元依次存储[线性表 ]的数据元素.(区别于有序表:表中的数据元素存在非递增或非递减有序) 链表:用一组任意的存储单元来存储[线性 ...
- (王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作
文章目录 一:线性表的定义 二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素 ...
- 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作
考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...
- 顺序表和单链表基本操作的实现
1.顺序表的建立.取指定元素.返回指定元素位置. 2.顺序表中插入新元素.删除指定元素操作的实现. 3.单链表的建立.取指定元素.返回指定元素位置. 4.单链表中插入新元素.删除指定元素操作的实现. ...
最新文章
- 08-图7 公路村村通
- Vue04 -- 计算属性用法(v-for的筛选排序)
- java 开票金额拆分_关于开票尾差拆分凑整的算法问题
- 解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题
- 瞿菡云计算机,“国家资助 伴我成长”——我校学生王丽娜、肖云菡荣获中职教育“国家奖学金”事迹材料...
- 全国青少年信息学奥林匹克联赛
- circle loss代码实现_CenterNet之loss计算代码解析
- Python中计算文件的MD5值
- 立镖机器人浙江_立镖现身LogiMAT 2019 彰显中国仓储分拣技术
- 期许伟大-基于CMMI的过程改进之道探索
- 关于84坐标系与54坐标系转换问题
- 一个炫酷的个人网站带后台
- [ahk]热键呼叫QQ经常聊天的人
- sketch html插件,玩转Sketch,不容错过的5大实用插件推荐
- 【AVS】AVS2编码器开源啦:xAVS2
- 这一篇和大家聊聊Hadoop
- 联想TD350服务器主板型号,【新品】塔式机身 联想ThinkServer TD350
- 新型病毒DoubleAgent 先入侵杀毒软件
- RPC 框架基本了解
- tcpdump manual 中文翻译
热门文章
- 基于AD9979+夏普sharp 1/3英寸130万像素CCD成像组件设计
- lumion实例渲染6.2
- 计算机桌面是快捷方式,我的电脑桌面上的图标都变成快捷方式了怎么处理?
- java登陆注册界面_java编写登陆注册页面(简单一点的,连接数据库)
- 微软拼音输入法如何打开添加表情与颜文字?
- 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
- 亲戚关系php,亲属关系称谓、亲属称谓表、亲属称呼表、亲属关系称呼
- Android打码函数,Android 马赛克(Mosaics)效果
- 微信公众号(服务号、订阅号、企业号)的区别
- Visual Studio快速配置增加文件版权声明