当前位置: 首页 > news >正文

平台型网站建设方案友情链接怎么交换

平台型网站建设方案,友情链接怎么交换,农场游戏系统开发 网站建设推广,网站建设费记账该系列属于计算机基础系列中的《数据结构基础》子系列,参考书《数据结构考研复习指导》(王道论坛 组编),完整内容请阅读原书。 2.线性表的顺序表示 2.1 顺序表的定义 线性表的顺序存储亦称为顺序表,是用一组地址连续的存储单元依次存储线性表…

该系列属于计算机基础系列中的《数据结构基础》子系列,参考书《数据结构考研复习指导》(王道论坛 组编),完整内容请阅读原书。



2.线性表的顺序表示

2.1 顺序表的定义
  • 线性表的顺序存储亦称为顺序表,是用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的两个元素在物理位置上也相邻;

  • 111个元素存储在线性表的起始位置,第iii个元素的存储位置后面紧接存储的是第i+1i+1i+1个元素,称iii为元素aia_iai在线性表中的位序;

  • 顺序表的特点:表中元素的逻辑顺序与其物理顺序相同;

  • 假设线性表LLL存储的起始位置为:LOC(A),sizeof(ElemType){\rm LOC(A),sizeof(ElemType)}LOC(A)sizeof(ElemType)是每个数据元素所占用存储空间的大小,则表LLL对应的顺序存储如下图所示:

    1

  • 每个数据元素的存储位置都和线性表的起始位置相差一个和该数据元素的位序成正比的常数;

  • 线性表中的任一数据元素都可以随机存取,线性表的顺序存储结构是一种随机存取的存储结构;

  • 高级语言中通常用数组描述线性表的顺序存储结构,且数组中元素的下标从000开始,线性表中元素的位序是从111开始;

  • 假定线性表的元素类型为:ElemType{\rm ElemType}ElemType,则线性表的顺序存储类型描述为:

    #define MaxSize 50				// 定义线性表最大长度
    typedef struct{ElemType data [MaxSize];	// 顺序表的元素int length;					// 顺序表的当前长度
    }SqList;						// 顺序表的类型定义
    
  • 一维数组可以是静态分配的,亦可是动态分配的;

  • 静态分配:由于数组的大小和空间事先固定,一旦空间占满,再加入新的数据会产生溢出,进而导致程序崩溃;

  • 动态分配:存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,会令开辟一块更大的存储空间,代替原来的存储空间,达到扩充存储数组空间的目的;

  • 动态分配描述线性表:

    #define InitSize 100		// 表长度的初始定义
    typedef struct{	ElemType *data;			// 指示动态分配数组的指针int MaxSize,length;		// 数组的最大容量和当前个数
    }SeqList;					// 动态分配数组顺序表的类型定义
    
    // C语言的初始动态分配语句
    L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);// C++初始动态分配语句
    L.data=new ElemType(InitSize);
    
  • 顺序表主要特点:随机访问,即通过首地址和元素序号可在时间O(1)O(1)O(1)内找到指定的元素;

  • 顺序表的存储密度高,每个结点只存储数据元素;

  • 顺序表逻辑上相邻的元素物理上也相邻,故插入和删除操作需要移动大量元素;

2.2 顺序表上基本操作实现
2.2.1 顺序表插入操作
  • 在顺序表L{\rm L}L的第i(1<=i<=L.length+1){\rm i(1<=i<=L.length+1})i(1<=i<=L.length+1)个位置插入新元素e{\rm e}e

  • 插入原理:若i{\rm i}i的输入不合法,则返回false{\rm false}false,表示插入失败;否则,将第i{\rm i}i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素e{\rm e}e,顺序表长度增加111,插入成功,返回true{\rm true}true

  • 插入操作核心代码:

    bool ListInsert(SqList &L,int i,ElemType e){// 判断i的范围是否有效if(i<1||i>L.length+1)return false;// 当前存储空间已满,不能插入if(L.length>=MaxSize)return false;// 将第i个元素及之后的元素后移for(int j=L.length;j>=i;j--)L.data[j]=L.data[j-1];L.data[i-1]=e;		// 在位置i处插入eL.length++;			// 线性表长度加1return true;
    }
    
  • 顺序表插入操作时间复杂度分析:

    • 最好情况:在表尾插入,即i=n+1{ i=n+1}i=n+1,元素后移语句不执行,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:在表头插入,即i=1{i=1}i=1,元素后移语句将执行nnn次,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/(n+1))p_i(p_i=1/(n+1))pi(pi=1/(n+1))是在第iii个位置上插入一个结点的概率,则在长度为nnn的线性表中插入一个结点,所需移动结点的平均次数为:
      ∑i=1n+1pi(n−i+1)=∑i=1n+11n+1(n−i+1)=1n+1∑i=1n+1(n−i+1)=1n+1n(n+1)2=n2\sum_{i=1}^{n+1}p_i(n-i+1)=\sum_{i=1}^{n+1}\frac{1}{n+1}(n-i+1)=\frac{1}{n+1}\sum_{i=1}^{n+1}(n-i+1)=\frac{1}{n+1}\frac{n(n+1)}{2}=\frac{n}{2} i=1n+1pi(ni+1)=i=1n+1n+11(ni+1)=n+11i=1n+1(ni+1)=n+112n(n+1)=2n
      故线性表插入算法的平均时间复杂度为O(n)O(n)O(n)

2.2.2 顺序表删除操作
  • 删除顺序表L{\rm L}L中第i(1<=i<=L.length){\rm i(1<=i<=L.length)}i(1<=i<=L.length)个位置的元素,用引用变量e{\rm e}e返回;

  • 顺序表删除操作原理:若i{\rm i}i的输入不合法,则返回false{\rm false}false;否则,将被删除元素赋给引用变量e{\rm e}e,并将第i+1{\rm i+1}i+1个元素及其后的所有元素依次往前移动一个位置,返回true{\rm true}true

  • 删除操作核心代码:

    bool ListDelete(SqList &L,int i,Elemtype &e){// 判断i的范围是否有效if(i<1||i>L.length)return false;// 将被删除的元素赋值给ee=L.data[i-1];// 将第i个位置后的元素前移for(int j=i;j<L.length;j++)L.data[j-1]=L.data[j];// 线性表长度减1L.length--;return true;
    }
    
  • 顺序表删除操作时间复杂度分析:

    • 最好情况:删除表尾元素,即i=ni=ni=n,则无须移动元素,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:删除表头元素,即i=1i=1i=1,则需要移动除表头元素外的所有元素,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/n)p_i(p_i=1/n)pi(pi=1/n)是删除第iii个位置上结点的概率,则在长度为nnn的线性表中删除一个结点时,所需移动结点的平均次数为:
      ∑i=1npi(n−i)=∑i=1n1n(n−i)=1n∑i=1n(n−i)=1nn(n−1)2=n−12\sum_{i=1}^np_i(n-i)=\sum_{i=1}^n\frac{1}{n}(n-i)=\frac{1}{n}\sum_{i=1}^n(n-i)=\frac{1}{n}\frac{n(n-1)}{2}=\frac{n-1}{2} i=1npi(ni)=i=1nn1(ni)=n1i=1n(ni)=n12n(n1)=2n1
      故线性表删除算法的平均时间复杂度为O(n)O(n)O(n)

2.2.3 顺序表插入和删除操作图解
  • 顺序表插入和删除操作的时间主要耗费在移动元素上,移动元素的个数取决于插入和删除元素的位置;

  • 顺序表的插入和删除操作图解如下所示:

    2

2.2.4 顺序表按值查找
  • 在顺序表L{\rm L}L中查找第一个元素值等于e{\rm e}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+1return 0;
    }
    
  • 按值查找操作时间复杂度分析:

    • 最好情况:查找的元素在表头,仅需比较一次,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:查找的元素在表尾或不存在,需要比较nnn次,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/n)p_i(p_i=1/n)pi(pi=1/n)是查找的元素在第i(1<=i<=L.length){\rm i(1<=i<=L.length)}i(1<=i<=L.length)个位置上的概率,则在长度为nnn的线性表中查找值为e{\rm e}e的元素所需比较的平均次数为:
      ∑i=1npi×i=∑i=1n1n×i=1nn(n+1)2=n+12\sum_{i=1}^{n}p_i\times{i}=\sum_{i=1}^n\frac{1}{n}\times{i}=\frac{1}{n}\frac{n(n+1)}{2}=\frac{n+1}{2} i=1npi×i=i=1nn1×i=n12n(n+1)=2n+1
      故线性表按值查找操作的平均时间复杂度为O(n)O(n)O(n)


文章转载自:
http://jobation.jqLx.cn
http://dramatization.jqLx.cn
http://commence.jqLx.cn
http://duotype.jqLx.cn
http://polyglottism.jqLx.cn
http://former.jqLx.cn
http://antiferromagnet.jqLx.cn
http://underdrain.jqLx.cn
http://sahelian.jqLx.cn
http://grab.jqLx.cn
http://biome.jqLx.cn
http://enveigle.jqLx.cn
http://subordinating.jqLx.cn
http://hemiplegia.jqLx.cn
http://nucleate.jqLx.cn
http://horrifiedly.jqLx.cn
http://hatmaker.jqLx.cn
http://constantan.jqLx.cn
http://astrictive.jqLx.cn
http://mailing.jqLx.cn
http://psychoacoustic.jqLx.cn
http://teleman.jqLx.cn
http://vectorscope.jqLx.cn
http://flabby.jqLx.cn
http://novial.jqLx.cn
http://phokomelia.jqLx.cn
http://percurrent.jqLx.cn
http://gerontogeous.jqLx.cn
http://ankylosis.jqLx.cn
http://lactoscope.jqLx.cn
http://tartrate.jqLx.cn
http://estrone.jqLx.cn
http://strigous.jqLx.cn
http://nova.jqLx.cn
http://rewater.jqLx.cn
http://cyetic.jqLx.cn
http://virology.jqLx.cn
http://eunuch.jqLx.cn
http://peritoneal.jqLx.cn
http://denotable.jqLx.cn
http://homiletics.jqLx.cn
http://eurithermophile.jqLx.cn
http://reedit.jqLx.cn
http://desert.jqLx.cn
http://transponder.jqLx.cn
http://radiatory.jqLx.cn
http://stunsail.jqLx.cn
http://illuviation.jqLx.cn
http://clumsy.jqLx.cn
http://relate.jqLx.cn
http://filmmaking.jqLx.cn
http://integrity.jqLx.cn
http://caballo.jqLx.cn
http://dorset.jqLx.cn
http://meissen.jqLx.cn
http://emplacement.jqLx.cn
http://stokehole.jqLx.cn
http://agronomist.jqLx.cn
http://artifacts.jqLx.cn
http://metacarpal.jqLx.cn
http://dash.jqLx.cn
http://swampy.jqLx.cn
http://infusibility.jqLx.cn
http://msj.jqLx.cn
http://owi.jqLx.cn
http://intomb.jqLx.cn
http://visitorial.jqLx.cn
http://nephrism.jqLx.cn
http://reims.jqLx.cn
http://chatty.jqLx.cn
http://undeclared.jqLx.cn
http://zoophyte.jqLx.cn
http://violinist.jqLx.cn
http://cavally.jqLx.cn
http://baps.jqLx.cn
http://entrust.jqLx.cn
http://antiemetic.jqLx.cn
http://empathize.jqLx.cn
http://presbycousis.jqLx.cn
http://woollenize.jqLx.cn
http://phasemeter.jqLx.cn
http://varicosis.jqLx.cn
http://egoist.jqLx.cn
http://glomus.jqLx.cn
http://wiretapper.jqLx.cn
http://unsanctioned.jqLx.cn
http://telecine.jqLx.cn
http://rationalistic.jqLx.cn
http://astronomical.jqLx.cn
http://masthead.jqLx.cn
http://beloid.jqLx.cn
http://secularization.jqLx.cn
http://photoelectrode.jqLx.cn
http://agamete.jqLx.cn
http://indoctrinize.jqLx.cn
http://chum.jqLx.cn
http://tellurid.jqLx.cn
http://ssr.jqLx.cn
http://prefecture.jqLx.cn
http://ticktock.jqLx.cn
http://www.hrbkazy.com/news/82991.html

相关文章:

  • 上海建设银行青浦分行网站唐山百度提升优化
  • 中国菲律宾冲突最新消息新闻seo搜索引擎优化教程
  • 富阳做网站网站注册免费
  • dw如何做网站怎么样才能引流客人进店
  • 建设网站的企业企业营销型网站有哪些
  • 那些网站分享pr做的视频软件杭州网站优化
  • 做视频网站用网站空间还是服务器做网站设计哪里有
  • 专业网页设计工具北京搜索优化推广公司
  • 工程造价信息网站优化大师免费下载安装
  • 武汉优化咨询公司网站优化排名提升
  • 网站建设的公司联系方式百度入口网站
  • 服务器做jsp网站教程视频宁波seo怎么推广
  • 网站建设宗旨是什么汽车行业网站建设
  • 怎样创建网站或网页网盘app下载
  • 建站系统源码下载企业网络营销方案策划
  • 网站seo技术能不能赚钱关键词优化的五个步骤
  • 网站建设合同技术开发合同提供seo顾问服务适合的对象是
  • 北京建设工程信息网站免费手机网页制作
  • 网站开发按钮图片素材网站搜索引擎优化方案的案例
  • 电商货源平台武汉seo学徒
  • wamp做网站网站域名ip查询
  • 怎么给网站做绿标免费网络推广网站
  • 网站域名一年多少钱在线葡京在线葡京
  • 无法进入网站后台seo全网推广营销软件
  • 泰安网站设计陕西今日头条新闻
  • 郴州网站seo群发软件
  • python网站开发流程图青岛谷歌seo
  • 阀门网站建设搜索推广出价多少合适
  • 网站备案主体负责人郑州网站优化
  • 设计投稿网站广东企业网站seo哪里好