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

什么是品牌网站报名系统网站开发

什么是品牌网站,报名系统网站开发,小程序开发成都公司,wordpress插件权限不足一、引入 线性结构是数据结构中最为重要的一种数据存储结构之一,同时也是其他数据结构的基础。今天我们就来学学数据结构中的一种基础类型——线性表。 二、线性表的定义和特点 线性表的定义:用数据元素的有限序列表示。具体情况如下图所示:…

一、引入


        线性结构是数据结构中最为重要的一种数据存储结构之一,同时也是其他数据结构的基础。今天我们就来学学数据结构中的一种基础类型——线性表。

二、线性表的定义和特点


        线性表的定义:用数据元素的有限序列表示。具体情况如下图所示:

        在日常生活中 ,线性表的例子比比皆是,例如,26个英文字母的字母表:

(A,B,C,D.......,Z)

线性表的几个特点如下:

①只有一个首结点和尾结点;

② 除首尾结点外,其他结点只有一个直接前驱和一个 直接后继。

        Tips:线性结构反映结点间的逻辑关系是 一对一 的。线性结构包括线性表、堆栈、队列、字符串、数组等。

三、线性表的顺序表示和实现


线性表的顺序表示又称为顺序存储结构,在这里,我们就要先了解以下两个概念了:

        顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。(逻辑上相邻,物理上也相邻)。

        顺序存储方法:用一组地址连续的存储单元依次存储 线性表的元素,可通过数组V[n]来实现。 

顺序表的类型定义 :

        基本类型的定义:构建出顺序表的基础架构,分别有最大长度、指向首地址的指针、记录长度的变量等组成元素。

#define  MAXSIZE 100     //最大长度
typedef  struct {ElemType *elem;     //指向数据元素的首地址int  length;         //线性表的当前长度
}SqList;

       下面用一个图书表的顺序存储结构类型定义来作为例子展示顺序表定义的步骤与效果:

#define MAXSIZE 10000     //图书表可能达到的最大长度
typedefstruct     //图书信息定义
{ char no[20];     //图书ISBNchar name[50];     //图书名字float price;     //图书价格
}Book;         //数据元素的类型定义typedefstruct{ Book*elem;     //存储空间的基地址int length;     //图书表中当前图书个数
}SqList;     //图书表的顺序存储结构类型为SqList

四、线性表的重要基本操作与算法实现 


4.1、 初始化线性表L


        线性表的初始化和一般数据类型的初始化相似,在构建该数据结构的时候得先进行空间分配、赋值等操作。在这其中我们要先了解这样一个自定义函数类型——Status。

        Status是用户自定义的一种函数类型,其基础架构和功能与bool类型相似,只是在返回值上做出了些改变。例如:

为了方便直观的表示算法,常用Status类型来封装。例如下面对线性表L的初始化操作:

Status InitList_Sq (SqList &L)
{    //构造一个空的顺序表LL.elem=new ElemType[MAXSIZE];   //为顺序表分配空间if(!L.elem){exit(OVERFLOW);      //存储分配失败}L.length=0;    //空表长度为0   return OK;
}

4.2、取值(根据位置i获取相应位置数据元素的内容) 


        取值操作主要用来获取线性表L中的某个数据元素的内容:

int GetElem(SqList L, int i, ElemType &e)
{if (i<1||i>L.length){return ERROR;     //判断i值是否合理,若不合理,返回ERROR}e=L.elem[i-1];     //第i-1的单元存储着第i个数据return OK;
}

4.3、查找(根据指定数据获取数据所在的位置) 


        由于涉及到指针操作,所以下面给出一个示意图来帮助大家理解:

        如果想要在线性表L中查找值为e的数据元素,用代码该如何表示呢?

代码描述:

int LocateELem(SqListL, ElemTypee){for (i=0;i< L.length;i++){if (L.elem[i]==e){ return i+1;                }}return 0;}

 4.4、插入(在第i个位置上插入)


        算法示意图表示:

【算法步骤】:

  1. 判断顺序表的存储空间是否已满,满了就不能插入新元素了。
  2. 判断插入位置i 是否合法。[1, L.length+1]
  3. 将第n至第i 位的元素依次向后移动一个位置,空出第i个位置。
  4. 将要插入的新元素e放入第i个位置。
  5. 表长加1,插入成功返回OK。 

若想在线性表L中第i个数据元素之前插入数据元素e ,也就是成 为第i个元素,用代码做如下操作:

Status ListInsert_Sq(SqList &L, int i , ElemType e)
{if(i<1 || i>L.length+1){return ERROR;      //i值不合法  }         if(L.length==MAXSIZE){     return ERROR;    //当前存储空间已满}for(j=L.length-1; j>=i-1; j--){   //L.length-1是最后一个元素, i-1是第i个元素L.elem[j+1]=L.elem[j];    //插入位置及之后的元素后移}L.elem[i-1]=e; //将新元素e放入第i个位置             ++L.length;//表长增1return OK;
}

Tips:线性表的长度为L.length,j=L.length-1 因为数组的下标从0开始 。

4.5、删除(删除第i个结点)


算法示意图表述:

【算法步骤】:

  1. 判断表是不是空(L.length=0 )。
  2. 判断删除位置i 是否合法(合法值为1≤i≤n)。
  3. 将欲删除的元素保留在e中。
  4. 将第i+1至第n 位的元素依次向前移动一个位置。
  5. 表长减1,删除成功返回OK。 

代码描述将线性表L中第i个数据元素删除:

Status ListDelete_Sq (SqList &L, int i)
{if(L.length==0){return ERROR; //表为空}if((i<1)||(i>L.length)) return ERROR; //i值不合法}    for (j=i; j<=L.length-1;j++){                   L.elem[j-1]=L.elem[j];     //被删除元素之后的元素前移--L.length;         //表长减1 }     
return OK;
}

4.6、其他操作:


清空线性表:

void ClearList(SqList&L) 
{L.length=0;                //将线性表的长度置为0
}

求线性表L的长度:

intGetLength(SqListL){return (L.length);             
}

求线性表是否满了:

intGetLength(SqListL){if(L.length==MAXSIZE){     return 1;}else{ return 0;}}

判断线性表L是否为空:

intIsEmpty(SqListL){if (L.length==0){ return 1;    }  else{ return 0;}}

   至此。关于线性表的基本学习我们就已经完成的差不多了。 如果我的内容对你有帮助,在下就厚着脸皮讨个点赞关注。如果你有更好的想法,还望留在评论区让我来参考学习。我将不胜感激并努力创作出更好的内容。


文章转载自:

http://n7s3ndte.jntcr.cn
http://ql16eidI.jntcr.cn
http://ClgiBySm.jntcr.cn
http://5EoNaVuF.jntcr.cn
http://tsUzIT31.jntcr.cn
http://IKCo9aSq.jntcr.cn
http://Pg9cZBcm.jntcr.cn
http://nJehsG5S.jntcr.cn
http://VbOjvejH.jntcr.cn
http://cUygKXKI.jntcr.cn
http://kRzlCZ8I.jntcr.cn
http://AXO5opd7.jntcr.cn
http://EumORChD.jntcr.cn
http://4uvqgbE4.jntcr.cn
http://U1N2GiB7.jntcr.cn
http://kGKrDWam.jntcr.cn
http://8McqpmvV.jntcr.cn
http://d5WTt9r7.jntcr.cn
http://hG9gPrt8.jntcr.cn
http://eV5xPTt8.jntcr.cn
http://jnxvGq0v.jntcr.cn
http://0n4vqb8O.jntcr.cn
http://j1q1S8cy.jntcr.cn
http://B4OwceZI.jntcr.cn
http://z9VKulC2.jntcr.cn
http://E6thZwgF.jntcr.cn
http://0DBVdvTa.jntcr.cn
http://qzBsWwHC.jntcr.cn
http://51rwFhFS.jntcr.cn
http://QqDuVbBD.jntcr.cn
http://www.dtcms.com/wzjs/609116.html

相关文章:

  • 做吗查网站的流量亚马逊跨境电商官方网站
  • 数字化校园门户网站建设方案页面设计图标
  • 河北建设厅官网站首页手机兼职有哪些
  • 怎么做网站横幅建设网站找什么问题
  • 租空间做网站wordpress子页面内容
  • 四川省住房城乡建设厅网站wordpress 对象存储插件
  • 建筑设计公司网站模板python做网站是不是特别慢
  • 网站关键字 优帮云网站查询工具seo
  • 网站网站建设网站上海建设安全生产协会网站
  • 一般网站建设流程有哪些步骤做网站项目的弊端
  • 做网站实训报告总结模板网站怎么做301
  • 南京网站群建设公司二维码网页制作免费网站制作
  • 国内免费图片素材网站2023新闻大事件摘抄
  • 建设一个网站平台搜索引擎的关键词优化
  • php开源网站工作不开心应该辞职吗
  • 自己做网站除了域名还需要什么门户网站建设进一步提升
  • 广东品牌网站建设公司静态做网站
  • 廊坊seo建站wordpress是php吗
  • php钓鱼网站开发做短视频网站收益
  • 斗门区住房和城乡建设网站把网页做成软件
  • 局网站建设管理整改情况wordpress文章别名
  • 建设部注册中心网站dtc建站服务
  • 网站代码检查竞价网
  • 网站建设开源模板十堰网站制作公司电话
  • 网站建设的探讨与研究网站开发工程师求职简历
  • 网站平台设计费用多少网站美工切图是如何做的
  • 淘宝的网站怎么做的好处seo如何快速排名百度首页
  • 做网络推广常用网站php网站开发事例
  • 永定门网站建设网络创作网站
  • 建设网站几钱科技有限公司网页设计