线性表(顺序存储)——c#.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表(顺序存储)——c#

线性表之c#版本 定义:零个或多个数据元素的有限序列。在这句话中,我们要注意的是有限和序列这两个词语。说白了,就是有前后顺序的、数量有限的一组数据!但要注意,数据的类型要相同。 在线性表中,元素的个数n(n=0)就是线性表的长度。当n=0时,线性表为空表。 线性表的一些基础操作有以下一些: 3.1 创建和初始化 3.2 置空 3.3 更据位序获取数据元素 3.4 查找 3.5 获取线性表长度 3.6 插入 3.7 删除 4 线性表根据其在内存中的不同物理方式,我们可以分为顺序存储和链式存储。他们各有各的好处和缺点,接下来要分析和写一些代码。 4.1顺序存储:一段物理地址连续的存储单元依次存储线性表的数据元素,一般用数组来存储。定义顺序存储的三要素是:数组的起始位置(数组的名称)、数组长度、数组当前位置(线性表长度)。 4.2 在这里要区别数组长度和线性表长度。数组长度就是这个线性表总共可以存储多少数据。有些书中谈到,可以动态分配一围数组,但会带来性能上的损耗(在后面的代码中有动态扩容)。线性表长度是当前线性表中有多少数据元素。我们要记牢:线性表长度一定小于等于数组长度。 4.3 顺序存储元素地址计算方法 LOC(ai)=LOC(a1)+(i-1)*C C:数组元素长度,比如整型长度是16位,字符型是8位等等…… 从中我们可以看出,取值的时间复杂度是O[1]。我们把有这个存储特点的存储结构叫做随即存储结构。 所有程序详见MyArrayList.cs 通过分析我们可以知道,顺序存储线性表存储数据的时间复杂度为O(1),但是删除和插入一个数据的时间复杂度为O(N)。所以,顺序存储线性表比较适合于那些存多变少的应用 有不懂问题可以直接通QQ:384054672联系我,大家一起讨论问题!附上c#实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyArrayList { class MyArrayList:IList { private object[] data = null; //用来存放数据的数组 private int current; //当前元素的下标 private int capacity; //数组共有多少容量 private int defaultLength = 10; public MyArrayList() //无参初始化,数组长度为10 { this.data = new object[defaultLength]; this.current = 0; this.capacity = defaultLength; } public MyArrayList(int initalSize) //带参初始化 { if (initalSize 0) { throw new Exception(错误:数组初始化大小参数错误:+initalSize); } this.data = new object[initalSize]; this.current = 0; this.capacity = initalSize; } private bool isListFull() //判断数组是否已满 { return this.capacity == this.current; } public bool IsListEmpty() { return this.current == 0; } public void ClearList() { for (int n = 0; n this.current

您可能关注的文档

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档