线性表是具有相同类型的n(n>=0)个元素的有限序列,其中n为表长,当n=0时,该表为空表

线性表的九种基本操作:

一、顺序表的定义

我们采用数组动态分配的方法

#define MaxSize 50
#define ElemType int
typedef struct
{ElemType *data; //数组的空间大小动态分配int length;
}SqList;

初始化时动态分配地址空间:

void InitList(SqList *&L,ElemType a[],int n)
{L=(SqList *)malloc(sizeof(SqList));//动态声明数组空间L->data = (ElemType *)malloc(sizeof(ElemType)*MaxSize);for (int i=0;i<n;i++)L->data[i]=a[i];L->length=n;
}

二、插入操作

  1. 判断插入是否超过了边界(1 ~ n+1)
  2. 判断数组有没有满
  3. 插入位置之后的每个数据元素往后移一位
  4. 插入数据
//前插
bool ListInsert(SqList *&L, int i, ElemType e){//判断是否超过边界if(i < 1 || i > L->length + 1)return false;//判断数组有没有满if(L->length >= MaxSize)return false;//每个数据元素都往后移for(int j = L->length; j >= i; j--)L->data[j] = L->data[j-1];L->data[i-1] = e;L->length++;return true;
}

三、删除操作

//删除
bool ListDelete(SqList *&L, int i, ElemType &e){//判断是否超过边界if(i < 1 || i > L->length)return false;e = L->data[i-1];for(int j = i; j < L->length; j++)L->data[j-1] = L->data[j];L->length--;return true;
}

四、查找

  1. 因为不需要更改,所以不用传引用
  2. 返回的是元素在表中的下标+1
//按值查找,返回顺序表的表号
int LocateElem(SqList *&L, ElemType e){int i;for(i = 0; i<L->length; i++){if(L->data[i] == e)return i+1;}return 0;//查找失败
}

最好时间复杂度:O(1)
平均时间复杂度:Pi(查找概率) = 1/n,查找次数i,∑Pi*i = (1+n)/2,O(n)

最坏时间复杂度:O(n)

五、删除顺序表

void DestroyList(SqList *&L)
{free(L->data);free(L);
}

六、测试

int main(){ElemType a[3] = {1,2,3};SqList *L;ElemType e;InitList(L, a, 3);ListInsert(L, 1, 0);ListDelete(L,4,e);printf("the element deleted: %d", e);DestroyList(L);system("pause");
}

2. 线性表的顺序结构相关推荐

  1. 数据结构-线性表的顺序结构

    1 #include "stdio.h" 2 #include "stdlib.h" 3 4 typedef int ElemType; //线性表存储基本类型 ...

  2. 数据结构二:线性表的顺序结构实现

    此程序根据高一凡大神的源程序修改而成. /************************************************************* FileName:c2-1.h F ...

  3. 线性表之顺序结构单链表

    数据结构学习笔记 文章目录 数据结构学习笔记 一.线性表的链式存储结构之单链表 1.单链表存储结构要素 2.实现过程 二.读取操作 1.算法思路 2.算法实现 三.插入操作 1.算法思路 2.算法实现 ...

  4. java 线性表的表示和实现_线性表中顺序表的的理解和实现(java)

    线性表的顺序表示指的是用一组地址连续的存储单元以此存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像.通常,称这种存储结构的线性表为顺序表.特点是:逻辑上相邻的数据元素,其物理次序上也 ...

  5. 【数据结构基础】-线性表的顺序实现(数组实现)基本操作

    2019.10.10 [数据结构-线性表的顺序结构] 基本操作:初始化,判断是否空表,清空表,获取表中的第i个元素,查找元素,插入元素,删除元素,获取表的元素个数. 抽象数据类型: #include ...

  6. C语言实现线性表之顺序表

    线性表的抽象数据类型 ADT 线性表(LIST) DATA 线性表的数据集合为{a1,...an},每个元素类型均为DataType, 其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素, ...

  7. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  8. 线性表:2.线性表的顺序存储结构--顺序表及C语言实现

    逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为 线性表的顺序存储结构 . 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中, ...

  9. 3、线性表的顺序存储结构(顺序表)

     线性表的顺序存储结构简称为顺序表.线性表的顺序存储结构是把线性表中的元素中的元素按照其逻辑顺序依次存储到计算机存储器中指定位置开始的一块连续的存储空间中,它直接将线性表的逻辑结构映射到存储结构上,既 ...

最新文章

  1. linux 源码安装 yum rpm区别
  2. Spring Cloud笔记
  3. Selenium自动化测试-5.脚本录制神器Katalon Recorder
  4. linux主机名包含点
  5. 关于Linux不能ping通外网的解决方法
  6. HTML实现简单注册页面
  7. 【网络通信 -- SIP 电话】项目实战记录 -- FreeSwitch 服务器搭建与典型 SIP 电话应用
  8. 谷歌浏览器android插件开发工具,ARC Welder插件 - 将安卓应用APK安装到谷歌浏览器并运行...
  9. 搜索引擎优化(step-by-step)
  10. 编译选项默认关闭adb RSA指纹认证
  11. 【Unity项目优化宝典】Unity3D手游开发客户端开发经验总结
  12. 选择任意你熟悉的编程语言开发一个C/S、B/S、B/A/S或基于移动设备的民航售票系统,实现基本功能
  13. macOS:隐私设置与数据库相关的问题
  14. 电脑搜索不到wifi信号的问题解决
  15. python回测代码_python实现马丁策略回测3000只股票的实例代码
  16. Win10添加右键菜单以管理员方式打开cmd命令行
  17. muduo学习笔记:net部分之Http--HttpServer
  18. 基于Java的部门管理系统
  19. 帮我从求职者的角度分析一下现在使用人数最多的十大汉语线上教学平台的申请难度...
  20. 全基因组测序 从头测序(de novo sequencing) 重测序(re-sequencing)

热门文章

  1. python常用代码大全-Python常用库大全,看看有没有你需要的
  2. python基础教程廖雪峰云-Python 基础教程
  3. python读音有道-Python实现有道翻译+语音播报
  4. 化学人学python有前途吗-用Python解析化学公式
  5. 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析
  6. 程序有时能运行有时不能_学法能有什么好处?有时候觉得挺“秃”然的..
  7. 2017年上海市计算机一级题库,2017年计算机一级题库及答案
  8. excel亮灯怎么设置_EXCEL高手进,用EXCEL实现亮灯功能
  9. 【数论】蓝桥20:数列求值
  10. JavaBean 与 EJB 的区别