顺序表,顾名思义存储在计算机指定内存区域的一块连续的存储结构,跟我们一起排队做广播体操的那种方式
存储物理结构:物理内存空间上是连续的
存储逻辑关系:存储值之间的关系为一对一
使用场景:一般访问数据量比较大,新增和删除操作不频繁的数据
那么我们这里实现的语言是用的c#,对于线性表的一些特性我们这里用数组来操作这个实现和操作。这里我们对线性表做一些操作:增、删、改、查

首先我们来定义一个顺序表

class LineClass{//设置线性表最大长度public const int MaxSize = 100;//初始化数据public string[] data;//线性表长度public int length;//初始化构造public LineClass(){//构造函数初始化线性表data = new string[MaxSize];length = 0;}
}
接下来我们把建立数据存储元素结构,这里是循环插入线性表,时间空间复杂度为:O(n)
#region 存储元素结构  O(n)public void CreateLine(string[] splits){int i;for (i = 0; i < splits.Length; i++){data[i] = splits[i];}length = i;}#endregion
然后我们把这个建立打印这个线性表的方法 ,时间空间复杂度为:O(n)
#region 将线性表的元素构成一个字符串返回  O(n)public string DispLine(){string strLine = string.Empty;for (int i = 0; i < length; i++){strLine += data[i] + ",";}return length > 0 ? strLine.TrimEnd(',') : "";}#endregion

获取这个顺序表的长度。时间空间复杂度为: O(1)

#region 线性表的长度    O(1)public int LineLength(){return length;}#endregion

获取第item个元素的值,时间空间复杂度为: O(1)

#region 获取线性表第item项,元素值为e   O(1)public bool GetElem(int item, ref string e){if (item < 1 || item > length){return false;}e = data[item - 1];return true;}#endregion
根据值获取到item的位置,这里值得注意的是,如果顺序表里存在两个相同的值,到底获取哪一个呢,我们这里是获取从第一个元素开始最近的一个值,如果匹配,那么返回。时间空间复杂度为:O(n)
#region 根据值获取位置   O(n)public int LocateElem(string e){int i = 0;while (i<length && string.Compare(data[i],e)!=0){i++;}return i >= length ? 0 : i + 1;}#endregion
接下来就是新增一个值,插入一个值后面值的往后排一个单位,记录最新的顺序表元素的数量。
注意:这里分为三种情况,第一种从第一个位置插入,那么后面所有的元素往后移动一个单位。这里的时间空间复杂度为:O(n)
第二种从中间插入,跟第一种的情况差不多,从这个位置开始,后面的每一项元素往后移动一个单位
第三种情况就是在顺序表后面插入,这种情况就直接插入。这里的时间复杂度为:O(1)

所有这里分为最好的和最坏的情况

#region 插入,从item处插入e值 O(n)public bool LineInsert(int item, string e){//插入的时候小于第一个的位置,或者大于最后两个位置if (item<1 || item>length+1){return false;}for (int j = length; j > item; j--){data[j] = data[j-1];}data[item - 1] = e;length++;return true;}#endregion
最后就是删除操作,跟新增差不多,只不过这里是删除,删除后此节点后面的所有元素向前移动一个单位,这里的时间空间复杂度为:O(n)
#region 删除  O(n)public bool LineDelete(int item, string e){//删除的时候小于第一个的位置,或者大于最后一个位置if (item < 1 || item > length ){return false;}e = data[item];for (int i = 0; i < length-1; i++){data[i] = data[i + 1];}length--;return true;}#endregion

结论:那么到这里呢顺序表操作结束了,可以说顺序表是结构最简单,存储内存消耗最小的一个数据结构
优点:存储密度高,存储效率高,存取速度快,可以随机存取结点

缺点:长度为定值,中途不易扩充。插入或删除需要移动结点,修改效率低

C#数据结构-顺序表相关推荐

  1. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

  2. 数据结构-顺序表(动态分配存储空间)

    数据结构-顺序表(动态分配存储空间) (1)顺序表的结构定义: 结构型定义:(动态分配存储空间) /*** 动态分配存储空间*/ #define InitSize 100 //动态分配存储空间时,不限 ...

  3. C语言/C++常见习题问答集锦[八十三]之数据结构顺序表(operand types are error: no match for “operator==“)

    C语言/C++常见习题问答集锦[八十三]之数据结构顺序表{operand types are error: no match for "operator=="} 程序之美 前言 主 ...

  4. 数据结构--顺序表的使用

    数据结构--顺序表的使 #include<iostream> #include<cstdio> #include<cstring> using namespace ...

  5. Educoder头歌数据结构顺序表及其应用

    头歌实践平台答案educoder 数据结构-顺序表及其应用 第1关:顺序表的实现之查找功能 /***************************************************** ...

  6. 数据结构——顺序表的合并

    数据结构--顺序表的合并 具体要求:写一个函数,其函数的功能是将非递增顺序表LA和LB合并到非递增顺序表LC中 数据结构-顺序表的操作之合并顺序表 一.顺序表的结构 首先要定义的是顺序表的结构体,只有 ...

  7. python顺序表数组_数据结构 | 顺序表

    什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表.集合与字典等都 ...

  8. 8.基本数据结构-顺序表和链表

    一.内存 - 计算机的作用:对数据进行存储和运算.首先我们需要知道我们目前使用的计算机都是二进制的计算机,就以为着计算机只可以存储和运算二进制的数据.例如下载好的一部电影,该电影可以存储到计算机中,计 ...

  9. 数据结构顺序表基本流程

    生活中很多事物是有顺序关系的,如班级座位从前到后是按排的顺序,从左到右是按列的顺序,可以很方便的定位到某一个位置,但如果座位是散乱的,就很难定位. 在程序中,经常需要将一组(通常是同为某个类型的)数据 ...

最新文章

  1. 转义符,re模块,rangdom随机数模块,
  2. java文件流null_JAVA 获取资源文件对象为NULL
  3. ServletContext读取图片
  4. 电脑电池修复_笔记本电脑充不进去电如何修复
  5. mysql 安装后大_Window下MySql 5.6 安装后内存占用很高的问题
  6. Visual Studio Code(VS Code)入门
  7. 520 情人节 :属于 Python 程序员的脱单攻略大合集(视频版)
  8. 11 个让你吃惊的 Linux 终端命令-转
  9. python函数里面可以修改一些数据类型
  10. 随机事件、随机变量、概率、概率密度函数
  11. LOJ#3083. 「GXOI / GZOI2019」与或和(单调栈)
  12. 全开源微信小程序商城系统源码:基于Java+uniapp框架开发
  13. 掌财社:传联想控股收身而退 放弃参与高盛投行计划
  14. Android信息处理机制
  15. 室内外无缝定位导航,GPS系统可以实现吗?
  16. 【codevs4093】 EZ的间谍网络 强连通分量+tarjan缩点
  17. JVM虚拟机基础知识(JVM位置、类加载生命周期、堆、元空间、jvm常用参数)
  18. js01--js基础入门
  19. 【BZOJ2152】聪聪可可 树分治
  20. 转载:解决服务器上 w3wp.exe 和 sqlserver.exe 的内存占用率居高不下的方案

热门文章

  1. (王道408考研操作系统)第三章内存管理-第二节3:页面置换算法1
  2. 二叉树经典题之二叉树最近公共祖先(LeetCode)
  3. 面试题 17.21. 直方图的水量/42. 接雨水
  4. kvm虚拟机网络设置隔离模式(一键shell脚本)
  5. shell 命令自动识别系统升级内核、系统索引更新
  6. Cowrie蜜罐的部署(ubt亲测)
  7. Spring----JmsTemplate
  8. verilog学习(1)基本语法
  9. C# HttpClient设置cookies的两种办法
  10. NXOpen.BlockStyler的一些用法