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)

顺序表的定义和基本操作相关推荐

  1. 数据结构(C语言)顺序表的定义及基本操作

    顺序表的定义及基本操作 一.数据结构:顺序表的定义,创建,基本运算,实现 二.全部代码 定义顺序表 #include<stdio.h> #include<malloc.h> # ...

  2. 顺序表的定义及基本操作

    目录 顺序存储类型描述 动态存储类型描述 建立顺序表 顺序表的插入操作 顺序表的删除操作 按指查找(顺序查找) 顺序存储类型描述 #define MaxSize 50 //定义线性表的最大长度 typ ...

  3. 顺序表的建立和基本操作

    顺序表的建立和基本操作 本题要求实现顺序表的基本操作. 函数定义:初始化 Status InitList(SqList *L); 插入操作 Status ListInsert(SqList *L,in ...

  4. 数据结构(C语言)——线性表(定义,基本操作)

    数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...

  5. C语言顺序表的定义以及各类操作

    #include <stdio.h> #include <string.h> #include <stdlib.h>#define maxsize 1024 typ ...

  6. 稀疏矩阵的三元组顺序表存储表示及基本操作

    /* Name: 稀疏矩阵的三元组顺序表存储表示及基本操作 Copyright:  Author: 巧若拙  Date: 27-10-14 21:28 Description:  ---------- ...

  7. 数据结构之【线性表】(顺序表、链表的基本操作实现)

    概念 线性表:是N个数据元素的有限序列. 顺序表:用一组地址连续的存储单元依次存储[线性表 ]的数据元素.(区别于有序表:表中的数据元素存在非递增或非递减有序) 链表:用一组任意的存储单元来存储[线性 ...

  8. (王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

    文章目录 一:线性表的定义 二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素 ...

  9. 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作

    考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...

  10. 顺序表和单链表基本操作的实现

    1.顺序表的建立.取指定元素.返回指定元素位置. 2.顺序表中插入新元素.删除指定元素操作的实现. 3.单链表的建立.取指定元素.返回指定元素位置. 4.单链表中插入新元素.删除指定元素操作的实现. ...

最新文章

  1. 08-图7 公路村村通
  2. Vue04 -- 计算属性用法(v-for的筛选排序)
  3. java 开票金额拆分_关于开票尾差拆分凑整的算法问题
  4. 解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题
  5. 瞿菡云计算机,“国家资助 伴我成长”——我校学生王丽娜、肖云菡荣获中职教育“国家奖学金”事迹材料...
  6. 全国青少年信息学奥林匹克联赛
  7. circle loss代码实现_CenterNet之loss计算代码解析
  8. Python中计算文件的MD5值
  9. 立镖机器人浙江_立镖现身LogiMAT 2019 彰显中国仓储分拣技术
  10. 期许伟大-基于CMMI的过程改进之道探索
  11. 关于84坐标系与54坐标系转换问题
  12. 一个炫酷的个人网站带后台
  13. [ahk]热键呼叫QQ经常聊天的人
  14. sketch html插件,玩转Sketch,不容错过的5大实用插件推荐
  15. 【AVS】AVS2编码器开源啦:xAVS2
  16. 这一篇和大家聊聊Hadoop
  17. 联想TD350服务器主板型号,【新品】塔式机身 联想ThinkServer TD350
  18. 新型病毒DoubleAgent 先入侵杀毒软件
  19. RPC 框架基本了解
  20. tcpdump manual 中文翻译

热门文章

  1. 基于AD9979+夏普sharp 1/3英寸130万像素CCD成像组件设计
  2. lumion实例渲染6.2
  3. 计算机桌面是快捷方式,我的电脑桌面上的图标都变成快捷方式了怎么处理?
  4. java登陆注册界面_java编写登陆注册页面(简单一点的,连接数据库)
  5. 微软拼音输入法如何打开添加表情与颜文字?
  6. 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
  7. 亲戚关系php,亲属关系称谓、亲属称谓表、亲属称呼表、亲属关系称呼
  8. Android打码函数,Android 马赛克(Mosaics)效果
  9. 微信公众号(服务号、订阅号、企业号)的区别
  10. Visual Studio快速配置增加文件版权声明