精华内容
下载资源
问答
  • 六种说明顺序
    千次阅读
    2017-09-21 18:44:00

    ♥注:未经博主同意,不得转载。

    两者特点:

    顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配。

    它的优点:

      (1)方法简单,各种高级语言中都有数组,容易实现。

      (2)不用为表示节点间的逻辑关系而增加额外的存储开销。

      (3)顺序表具有按元素序号随机访问的特点。

    缺点:

      (1)在顺序表中做插入、删除操作时,平均移动表中的一半元素,因此对n较大的顺序表效率低。

      (2)需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。

    在链表中逻辑上相邻的数据元素,物理存储位置不一定相邻,它使用指针实现元素之间的逻辑关系。并且,链表的存储空间是动态分配的。

    链表的最大特点是:

      插入、删除运算方便。

    缺点:

      (1)要占用额外的存储空间存储元素之间的关系,存储密度降低。存储密度是指一个节点中数据元素所占的存储单元和整个节点所占的存储单元之比。

      (2)链表不是一种随机存储结构,不能随机存取元素。

    三、顺序表与链表的优缺点切好相反,那么在实践应用中怎样选取存储结构呢?通常有以下几点考虑:

      (1)顺序表的存储空间是静态分配的,在程序执行之前必须明确规定它的存储规模,也就是说事先对“MaxSize”要有合适的设定,设定过大会造成存储空间的浪费,过小造成溢出。因此,当对线性表的长度或存储规模难以估计时,不宜采用顺序表。然而,链表的动态分配则可以克服这个缺点。链表不需要预留存储空间,也不需要知道表长如何变化,只要内存空间尚有空闲,就可以再程序运行时随时地动态分配空间,不需要时还可以动态回收。因此,当线性表的长度变化较大或者难以估计其存储规模时,宜采用动态链表作为存储结构。

      但在链表中,除数据域外还需要在每个节点上附加指针。如果节点的数据占据的空间小,则链表的结构性开销就占去了整个存储空间的大部分。当顺序表被填满时,则没有结构开销。在这种情况下,顺序表的空间效率更高。由于设置指针域额外地开销了一定的存储空间,从存储密度的角度来讲,链表的存储密度小于1.因此,当线性表的长度变化不大而且事先容易确定其大小时,为节省存储空间,则采用顺序表作为存储结构比较适宜。

      (2)基于运算的考虑(时间)

      顺序存储是一种随机存取的结构,而链表则是一种顺序存取结构,因此它们对各种操作有完全不同的算法和时间复杂度。例如,要查找线性表中的第i个元素,对于顺序表可以直接计算出a(i)的的地址,不用去查找,其时间复杂度为o(1).而链表必须从链表头开始,依次向后查找,平均需要o(n)的时间。所以,如果经常做的运算是按序号访问数据元素,显然顺序表优于链表。

      反之,在顺序表中做插入,删除时平均移动表中一半的元素,当数据元素的信息量较大而且表比较长时,这一点是不应忽视的;在链表中作插入、删除,虽然要找插入位置,但操作是比较操作,从这个角度考虑显然后者优于前者。

      (3)基于环境的考虑(语言)

      顺序表容易实现,任何高级语言中都有数组类型;链表的操作是基于指针的。相对来讲前者简单些,也是用户考虑的一个因素。

      总之,两种存储结构各有长短,选择哪一种由实际问题中的主要因素决定。通常“较稳定”的线性表,即主要操作是查找操作的线性表,适于选择顺序存储;而频繁做插入删除运算的(即动态性比较强)的线性表适宜选择链式存储。

     

    转载于:https://www.cnblogs.com/tenjl-exv/p/7476373.html

    更多相关内容
  • 期中作业
  • VHDL的顺序语句

    千次阅读 2021-05-30 15:23:18
    VHDL语言支持的并行语句主要有以下几: 赋值语句 wait语句 after语句 if语句 case语句 null语句 loop语句 exit语句 next语句 assertion/report语句 return语句 顺序语句在VHDL程序中的位置 顺序语句只出现在

    上次我们了解了VHDL语言的并行语句,现在我们来学习VHDL的顺序语句。
    顺序语句与并行语句共同构成了VHDL的描述语言,是VHDL作为硬件描述语句的一个特点。顺序语句只在仿真时间上是相对并行语句而言的,实际硬件的运行不一定是顺序执行的。
    VHDL语言支持的并行语句主要有以下几种:

    • 赋值语句
    • wait语句
    • after语句
    • if语句
    • case语句
    • null语句
    • loop语句
    • exit语句
    • next语句
    • assertion/report语句
    • return语句

    顺序语句在VHDL程序中的位置
    顺序语句只出现在进程、过程和函数中,举例如下:

    --在进程中出现的位置
    process(敏感信号列表)
    --声明部分
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    end process;
    --在过程中出现的位置
    procedure 过程名(参数列表)is
    --声明部分
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    end process;
    --在函数中的位置
    function 函数名(参数列表)return 返回值类型 is
    --声明部分
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    		return 返回值
    end 函数名;
    

    顺序语句的并行执行
    顺序语句是VHDL描述语言重要组成部分,但是不能从字面意义上面理解为顺序语句在硬件上就是一条一条地顺序执行,应该从硬件的角度理解顺序语句只是一种描述方式,不要在意顺序性。

    一、顺序赋值语句

    顺序赋值语句出现在进程、过程和函数中的赋值语句。由于进程、过程和函数中可以出现变量处理,所以顺序赋值语句不仅可以给信号赋值,还可以给变量赋值,它们的赋值格式如下:
    信号<=表达式;
    变量名:<=表达式;

    信号与变量在赋值更新上有区别,信号赋值更新至少有delta延时,而变量的赋值更新是立即执行的。

    二、wait语句

    wait语句的功能是把一个进程挂起,直到满足等待的条件成立才开始该进程的执行。wait语句一般有以下3种基本形式:

    • wait on(敏感信号列表)
    • wait until(判断条件表达式)
    • wait for(时间)

    1、wait on语句
    wait on(敏感信号列表)用于挂起进程,直到敏感信号列表中的信号发生变化时再次启动进程。使用格式如下:
    *

    process
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    		wait on(敏感信号列表);
    end process;*
    

    2、wait until语句
    wait until(判断条件表达式)功能是当判断条件式信号发生变化且判断条件表达式的值为真时,wait until(判断条件表达式)所在的进程或过程将重新执行,直到wait until(判断条件表达式)所在的进程或是过程将被挂起。wait until(判断条件表达式)的基本格式如下:

    *process
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    		wait until 判断条件表达式;
    end process;*
    

    3、wait for语句
    wait for时间t语句功能是把进程挂起时间t,之后再启动进程。wait for语句一般用VHDL测试文件,综合工具一般不支持。格式如下:

    *process
    begin
    		顺序语句1;
    		顺序语句2;
    		...
    		顺序语句n;
    		wait for 时间t;
    end process;*
    

    三、after语句

    after语句是信号赋值延时语句,一般只在仿真或仿真测试时使用,基本格式如下:
    信号<=表达式 after 时间;
    举例如下:
    data<=da or db after 10ns;//功能是da与db取或后延时10ns赋给data。

    四、if语句

    if语句是顺序语句中最常用的语句之一,功能是通过对分支条件的判断来决定执行哪个分支的顺序语句。一般有以下3种形式:

    • 单分支if语句
    • 两分支if语句
    • 多分支if语句

    1、单分支if语句
    如果if的判断条件为真,则执行下面的相关语句;否则,不做任何操作。格式如下:

    if 条件判断表达式 then
    			顺序语句;
    end if;
    

    2、两分支if语句
    如果if的判断条件为真,则执行分支1的相关语句;否则执行分支2的相关语句。所以,两分支if语句可以看成一个二选一选择器。基本格式如下:

    if 条件判断表达式 then
    			顺序语句1;
    else
    			顺序语句2;
    end if;
    

    两分支if语句不会产生锁存器。

    3、多分支if语句
    如果第一个条件判断为真,则执行分支1语句;否则,如果判断第二个条件判断为真,则执行分支2的语句。以此类推,如果所有条件为假,如果有else分支,则执行else分支的语句;如果没有,则不做任何操作。基本格式如下:

    --有else分支
    if 条件判断表达式1 then
    			顺序语句1;
    elseif 条件判断表达式2 then
    			顺序语句2;
    ...
    elseif 条件判断表达式n then
    			顺序语句n;
    else
    			顺序语句n+1;
    end if;
    --或是没有else 分支
    if 条件判断表达式1 then
    		顺序语句1;
    elseif 条件判断表达式2 then
    			顺序语句2;
    ...
    elseif 条件判断表达式n then
    			顺序语句n;
    end if	
    

    五、case语句

    功能是通过对分支条件得到判断来决定执行哪个分支的顺序语句。一般形式如下:

    case 判断表达式 is
    when 选择项 1=>
    		顺序语句1;
    when 选择项 2=>
    		顺序语句2;
    ...
    when 选择项 n=>
    		顺序语句n+1;
    when others=>
    		顺序语句n+1;
    		end case;
    

    当执行case语句时,首先要计算表达式的值,如果表达式的值与选择项1相等,则执行顺序语句1;否则,如果表达式的值与选择项2相等,则执行顺序语句;依次比较,如果所有选择项都与判断表达式的值不相等,则执行others分支下的顺序语句n+1。选择项可以是一个值,也可以是多个值“|”相连,也可以是用to约束的一个范围,但选择项不能有重复。
    有关case选择项有以下几点说明:

    1. 选择项取值必须在判断表达式的取值范围内
    2. 各个选择项不能有重复
    3. 如果选择项不能列举完判断表达式的所有情况,最后必须加others选择项

    六、null语句

    null语句语法意义在于不做任何操作,也没对应的综合结果。只是显示说明在某些情况下不做任何操作,在一定程序上能提高VHDL程序的可读性,一般格式如下:
    null;

    七、loop语句

    loop语句功能是循环执行一条或多条顺序语句,主要有3种基本形式:

    • for循环形式
    • while循环形式
    • 条件跳出形式

    1、for/loop语句
    一般格式如下:

    for 循环变量 in 循环变量的范围 loop
    		顺序语句;
    end loop;
    

    2、while/loop语句
    while循环形式一般格式如下:

    标号:while 循环的条件 loop
    		顺序语句;
    end loop 标号;
    

    while循环形式的loop语句在循环条件为假时跳出循环。

    八、exit语句

    exit语句格式有3种:
    1、exit //第一种
    2、exit loop 标号 //第二种
    3、exit loop 标号 when条件表达式 //第三种

    条件跳出形式一般格式如下:

    标号:loop
    				顺序语句;
    				exit when 跳出循环条件;
    end loop 标号;
    

    九、next语句

    主要用在loop语句执行中进行有条件的或无条件的转向控制,基本格式有以下三种:

    1. next (当loop内的顺序语句执行到next语句时,则无条件终止当前的循环并跳回到本次循环loop语句处开始下一次循环)
    2. next loop 标号 (在next旁边加loop标号后的语句功能与未加loop标号的功能相同,只是有多重loop语句嵌套时,前者可跳转到指定标号的loop语句处重新开始执行循环操作)
    3. next loop 标号 when条件表达式(分句“when条件表达式”是执行语句的条件,如果条件表达式的值为true,则执行next语句进入跳转操作;否则,继续向下执行)

    10、return 语句

    只能在函数中使用,用于返回函数的返回值,基本格式如下:

    return 表达式;
    

    表达式就是函数的返回值;

    展开全文
  • 排列活动顺序是识别和记录项目活动之间的关系的过程,本过程的主要作用是定义工作之间的逻辑顺序,以便在既定的所有项目制约因素下获得最高的效率。本过程需要在整个项目期间开展。过程图如下所示: 除了首尾两...

           排列活动顺序是识别和记录项目活动之间的关系的过程,本过程的主要作用是定义工作之间的逻辑顺序,以便在既定的所有项目制约因素下获得最高的效率。本过程需要在整个项目期间开展。过程图如下所示:

           除了首尾两项,每项活动都至少有一项紧前活动和一项紧后活动,并且逻辑关系适当。通过设计逻辑关系来创建一个切实的项目进度计划,可能有必要在活动之间使用提前量或滞后量,使项目进度计划更为切实可行;可以使用项目管理软件、手动技术或自动技术,来排列活动顺序。排列活动顺序过程旨在将项目活动列表转化为图表,作为发布进度基准的第一步。

    输入:

    1、项目管理计划

    项目管理计划组件包括(但不限于):

           进度管理计划。进度管理计划规定了排列活动顺序的方法和准确度,以及所需的其他标准。

           范围基准。在排列活动顺序时,需明确考虑范围基准中的项目 WBS、可交付成果、制约因素和假设条件。

    2、项目文件

    可作为本过程输入的项目文件包括(但不限于):

           活动属性。活动属性中可能描述了事件之间的必然顺序或确定的紧前或紧后关系,以及定义的提前量与滞后量,和活动之间的逻辑关系。

           活动清单。活动清单列出了项目所需的、待排序的全部进度活动,这些活动的依赖关系和其他制约因素会对活动排序产生影响。

           假设日志。假设日志所记录的假设条件和制约因素可能影响活动排序的方式、活动之间的关系,以及对提前量和滞后量的需求,并且有可能生成一个会影响项目进度的风险。

           里程碑清单。里程碑清单中可能已经列出特定里程碑的实现日期,这可能影响活动排序的方式。

    3、事业环境因素

    4、组织过程资产

    工具与技术:

    1、紧前关系绘图法

           紧前关系绘图法(PDM)是创建进度模型的一种技术,用节点表示活动,用一种或多种逻辑关系连接活动,以显示活动的实施顺序。

           PDM 包括四种依赖关系或逻辑关系。紧前活动是在进度计划的逻辑路径中,排在非开始活动前面的活动。紧后活动是在进度计划的逻辑路径中,排在某个活动后面的活动。这些关系的定义如下,并如图 6-9 所示。

           a、完成到开始(FS)。只有紧前活动完成,紧后活动才能开始的逻辑关系。例如,只有完成装配 PC 硬件(紧前活动),才能开始在 PC 上安装操作系统(紧后活动)。

           b、完成到完成(FF)。只有紧前活动完成,紧后活动才能完成的逻辑关系。例如,只有完成文件的编写(紧前活动),才能完成文件的编辑(紧后活动)。

           c、开始到开始(SS)。只有紧前活动开始,紧后活动才能开始的逻辑关系。例如,开始地基浇灌(紧后活动)之后,才能开始混凝土的找平(紧前活动)。

           d、开始到完成(SF)。只有紧前活动开始,紧后活动才能完成的逻辑关系。例如,只有启动新的应付账款系统(紧前活动),才能关闭旧的应付账款系统(紧后活动)。

           在 PDM 图中,FS 是最常用的逻辑关系类型;SF 关系则很少使用,为了保持 PDM 四种逻辑关系类型的完整性,这里也将 SF 列出。

           虽然两个活动之间可能同时存在两种逻辑关系(例如 SS FF),但不建议相同的活动之间存在多种关系。因此必须做出选出影响最大关系的决定。此外也不建议采用闭环的逻辑关系。

    2、确定和整合依赖关系

           如下所述,依赖关系可能是强制选择的,内部外部的。这四种依赖关系可以组合成强制性外部依赖关系强制性内部依赖关系选择性外部依赖关系选择性内部依赖关系

           a、强制性依赖关系强制性依赖关系是法律或合同要求的或工作的内在性质决定的依赖关系, 强制性依赖关系往往与客观限制有关。例如,在建筑项目中,只有在地基建成后,才能建立地面结构;在电子项目中,必须先把原型制造出来,然后才能对其进行测试。强制性依赖关系又称硬逻辑关系或硬依赖关系,技术依赖关系可能不是强制性的。在活动排序过程中,项目团队应明确哪些关系是强制性依赖关系,不应把强制性依赖关系和进度计划编制工具中的进度制约因素相混淆。

           b、选择性依赖关系选择性依赖关系有时又称首选逻辑关系、优先逻辑关系或软逻辑关系。即便还有其他依赖关系可用,选择性依赖关系应基于具体应用领域的最佳实践或项目的某些特殊性质对活动顺序的要求来创建。例如,根据普遍公认的最佳实践,在建造期间,应先完成卫生管道工程,才能开始电气工程。这个顺序并不是强制性要求,两个工程可以同时(并行)开展工作,但如按先后顺序进行可以降低整体项目风险。应该对选择性依赖关系进行全面记录,因为它们会影响总浮动时间,并限制后续的进度安排。如果打算进行快速跟进,则应当审查相应的选择性依赖关系,并考虑是否需要调整或去除。在排列活动顺序过程中,项目团队应明确哪些依赖关系属于选择性依赖关系。

           c、外部依赖关系。外部依赖关系是项目活动与非项目活动之间的依赖关系,这些依赖关系往往不在项目团队的控制范围内。例如,软件项目的测试活动取决于外部硬件的到货;建筑项目的现场准备,可能要在政府的环境听证会之后才能开始。在排列活动顺序过程中,项目管理团队应明确哪些依赖关系属于外部依赖关系。

           d、内部依赖关系内部依赖关系是项目活动之间的紧前关系,通常在项目团队的控制之中。例如,只有机器组装完毕,团队才能对其测试,这是一个内部的强制性依赖关系。在排列活动顺序过程中,项目管理团队应明确哪些依赖关系属于内部依赖关系。

    3、提前量和滞后量

           提前量是相对于紧前活动,紧后活动可以提前的时间量。例如,在新办公大楼建设项目中,绿化施工可以在尾工清单编制完成前 2 周开始,这就是带 2 周提前量的完成到开始的关系,如图 6-10 所示。在进度计划软件中,提前量往往表示为负滞后量。

           滞后量是相对于紧前活动,紧后活动需要推迟的时间量。例如,对于一个大型技术文档,编写小组可以在编写工作开始后 15 天,开始编辑文档草案,这就是带 15 天滞后量的开始到开始关系,如 图 6-10 所示。在图 6-11 的项目进度网络图中,活动 H 和活动 I 之间就有滞后量,表示为SS+10(带 10 天滞后量的开始到开始关系),虽然图中并没有用精确的时间刻度来表示滞后的量值。

           项目管理团队应该明确哪些依赖关系中需要加入提前量或滞后量,以便准确地表示活动之间的逻辑关系。提前量和滞后量的使用不能替代进度逻辑关系,而且持续时间估算中不包括任何提前量或滞后量,同时还应该记录各种活动及与之相关的假设条件。

    4、项目信息管理系统

    输出:

    1、项目进度网络图

           项目进度网络图是表示项目进度活动之间的逻辑关系(也叫依赖关系)的图形。图 6-11 是项目进度网络图的一个示例。项目进度网络图可手工或借助项目管理软件来绘制,可包括项目的全部细节,也可只列出一项或多项概括性活动。项目进度网络图应附有简要文字描述,说明活动排序所使用的基本方法。在文字描述中,还应该对任何异常的活动序列做详细说明。

           带有多个紧前活动的活动代表路径汇聚,而带有多个紧后活动的活动则代表路径分支。带汇聚和分支的活动受到多个活动的影响或能够影响多个活动,因此存在更大的风险。I 活动被称为“路径汇聚”,因为它拥有多个紧前活动,而 K 活动被称为“路径分支”,因为它拥有多个紧后活动

    2、项目文件更新

    可在本过程更新的项目文件包括(但不限于):

           活动属性。活动属性中可能描述了事件之间的必然顺序或确定的紧前或紧后关系,以及定义的提前量与滞后量,和活动之间的逻辑关系。

           活动清单。在排列活动顺序时,活动清单可能会受到项目活动关系变更的影响。

           假设日志。根据活动的排序、关系确定以及提前量和滞后量,可能需要更新假设日志中的假设条件和制约因素,并且有可能生成一个会影响项目进度的风险。

           里程碑清单。在排列活动顺序时,特定里程碑的计划实现日期可能会受到项目活动关系变更的影响。

    展开全文
  • 文章目录线性结构的定义:线性表一、线性表的定义和特点例1 分析26 个英文字母组成的英文表例2 分析学生情况登记表顺序存储结构存在问题二、线性表的类型定义 线性结构的定义: 若结构是非空有限集,则有且仅有一个...

    线性结构的定义:

    若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
    可表示为:(a1 , a2 , ……, an)

    线性表

    线性结构表达式:(a1 , a2 , ……, an)
    线性结构的特点:
    ① 只有一个首结点和尾结点;
    ② 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。
    简言之,线性结构反映结点间的逻辑关系是 一对一 的
    线性结构包括线性表、堆栈、队列、字符串、数组等等,其中,最典型、最常用的是线性表

    一、线性表的定义和特点

    线性表的定义:用数据元素的有限序列表示
    在这里插入图片描述

    例1 分析26 个英文字母组成的英文表

    ( A,  B,  C,  D, ……  ,  Z)
    			  数据元素都是字母;     
    			  元素间关系是线性
    

    例2 分析学生情况登记表

    在这里插入图片描述
    数据元素都是记录;
    元素间关系是线性
    同一线性表中的元素必定具有相同特性

    顺序存储结构存在问题

    存储空间分配不灵活
    运算的空间复杂度高

    总结

    • 线性表中数据元素的类型可以为简单类型,也可以为复杂类型。
    • 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体
      应用单独编写一个程序。
    • 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作

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

    线性表的顺序表示又称为顺序存储结构或顺序映像。

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

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

    在这里插入图片描述

    顺序表的类型定义

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

    线性表的重要五大基本操作

    1、初始化线性表L (参数用引用)

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

    1、初始化线性表L (参数用指针)

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

    2、销毁线性表L

    void DestroyList(SqList &L)
    {
      if (L.elem) delete[]L.elem;    	//释放存储空间
    }
    

    3、清空线性表L

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

    4、求线性表L的长度

    int GetLength(SqList L)
    {   
    	return (L.length);             
    }
    

    5、判断线性表L是否为空

    int IsEmpty(SqList L)
    {  
    	if (L.length==0) 
    		return 1;      
       	else 
       		return 0;
    }
    

    取值操作

    (根据位置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;
    }
    

    查找操作

    在这里插入图片描述

    // 在线性表L中查找值为e的数据元素
    int LocateELem(SqList L,ElemType e)
    {
          for (i=0;i< L.length;i++)
              if (L.elem[i]==e) 
              	return i+1;                
          return 0;
    }
    

    插入操作(插在第i个结点之前)

    在这里插入图片描述

    算法步骤

    (1)判断插入位置 i 是否合法。

    (2)判断顺序表的存储空间是否已满。

    (3)将第n至第i 位的元素依次向后移动一个位置,空出第i个位置。

    (4)将要插入的新元素e放入第i个位置。

    (5)表长加1,插入成功返回OK。

    // 在线性表L中第i个数据元素之前插入数据元素e 
    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.elem[j+1]=L.elem[j];    	//插入位置及之后的元素后移
        L.elem[i-1]=e; 			//将新元素e放入第i个位置
      	++L.length;		     	//表长增1
      return OK;
    }
    

    5.删除操作(删除第i个结点)

    在这里插入图片描述

    算法步骤

    (1)判断删除位置i 是否合法(合法值为1≤i≤n)。

    (2)将欲删除的元素保留在e中。

    (3)将第i+1至第n 位的元素依次向前移动一个位置。

    (4)表长减1,删除成功返回OK。

    // 将线性表L中第i个数据元素删除
    Status ListDelete_Sq(SqList &L,int i)
    {
       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;
    }
    

    三、顺序表(顺序存储结构)的特点

    (1)利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与存储结构一致

    (2)在访问线性表时,可以快速地计算出任何一个数据元素的存储地址。因此可以粗略地认为,访问每个元素所花时间相等

    这种存取元素的方法被称为随机存取法

    四、顺序表的优缺点

    优点:

    • 存储密度大(结点本身所占存储量/结点结构所占存储量)
    • 可以随机存取表中任一元素

    缺点:

    • 在插入、删除某一元素时,需要移动大量元素
    • 浪费存储空间
    • 属于静态存储形式,数据元素的个数不能自由扩充

    为解决这一问题----------->

    展开全文
  • 实现顺序表的各种基本运算的算法(超详细)

    千次阅读 多人点赞 2021-08-08 21:25:50
    //顺序表基本运算算法 #include <stdio.h> #include <malloc.h> #define MaxSize 50 typedef char ElemType; typedef struct { ElemType data[MaxSize]; //存放顺序表元素 int length; //存放...
  • C++ 并行编程之原子操作的内存顺序

    千次阅读 2018-12-10 23:44:05
    memory order主要有以下几: memory_order_relaxed 只提供对单个atomic变量的原子读/写,不和前后语句有任何memory order的约束关系。 memory_order_consume 程序可以说明哪些变量有依赖关系,从而只需要同步...
  • 解答bios设置硬盘启动顺序的操作教程阅读:596时间:2019-10-09 09:44:25相信大多数用户心里都清楚,我们所使用的电脑再启动前户先从硬盘里找寻引导文件,这样子才能顺利启动系统,那么我们就必须先进入bios设置...
  • 级题型 时间的分配 四级和级仅听力的时间不同 写作考试时间30分钟,占15%; 听力考试时间四级为25分钟、级为30分钟,占35%; 阅读理解考试时间40分钟,占35%; 翻译考试时间30分钟,占15%。 级共计130...
  • C语言的运算符顺序

    万次阅读 多人点赞 2019-09-20 21:33:31
    说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->...
  • LinkedHashMap如何保证顺序

    千次阅读 2019-07-13 15:46:44
    LinkedHashMap使用的也较为频繁,它基于HashMap,用于HashMap的特点,又增加了双链表的结构,从而保证了顺序性,本文主要从源码的角度分析其如何保证顺序性,accessOrder的解释,以及常用方法的阐释
  •  序号Sequence Number,有顺序的号码,如数字序号:1、2、3……,大写汉字也算数字序号,如:一、二、三……序号可以清晰的分清同一类事物,也可以用序号作文章的小标题。我们在写文章,特别是在写论文中经常会用...
  • 汉字顺序颠倒错乱后,读者地阅读理解正确率仍为,这说明读者识别到那些词素位置颠倒地错词以后,仍能激活正确地词,从而获得语义.“研表究明,汉字序顺并不定一影阅响读.比如当你看完这句话后,才发这现里地字全是都...
  • 说明文方法答题格式

    千次阅读 2021-02-11 21:30:16
    说明文方法答题格式说明文是一说明为主要表达方式的文章体裁。它通过对实体事物科学地解说,对客观事物做出说明或对抽象事理的阐释,使人们对事物的形态、构造、性质、种类、成因、功能、关系或对事理的概念、...
  • 除了以上六种情形以外,所有其它的方式都是被动使用的,不会导致类的初始化。 一旦一个类被装载、连接和初始化,它就随时可以使用了。现在我们来关注对象的实例化,对象实例化和初始化是就是对象生命的起始...
  • having子句详解&执行顺序

    千次阅读 2017-11-07 11:09:31
    having子句详解&执行顺序
  • 网络字节顺序和主机字节顺序的转换(htons ntohs htonl ntohl) 注:这是我在网上看到的一篇很好的文章,拿出来分享........ 什么是网络字节顺序和主机字节顺序呢? 在进行网络编程时,需要进行转换以统一“格式” ...
  • 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ有哪些关键特性?其实现原理是怎样的? 关键特性及其实现原理 一、顺序...
  • 软件需求分析阶段:输出了《软件需求规格说明书》,不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作,搞清楚“要解决什么问题”。 概要设计阶段:确定软件系统的总体布局,各个子模块的功能和...
  • char、short、int、long、float、double这个关键字代表C语言中的6基本数据类型。 在不同的系统上,这些类型占据的字节长度是不同的。 数据类型 32位系统 64位系统 char...
  • MySQL的查询语句语法虽然是描述性语言,但是在使用的时候,我发现如果语句书写顺序不正确的话,还是很容易发生报错的,如果您已经学了查询语句的概念,但是写代码的时候有些模糊,那我后面写的可能会对您有所帮助!...
  • Swagger2常用注解说明

    万次阅读 多人点赞 2020-07-20 23:40:14
    文章目录Swagger2简介使用Swagger解决的问题Spring Boot集成Swagger2添加依赖添加Swagger2Config配置类编写接口用户DTO用户controller访问接口文档Swagger2常用注解说明Controller相关注解@Api接口相关注解@...
  • 六种常用的文本聚类算法介绍

    千次阅读 2020-05-17 23:21:34
    文本聚类算法介绍 分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将...聚类是一无监督学习方
  • 北京理工大学实验一实验报告表.docx

    千次阅读 2021-07-02 00:46:44
    输出设备24实验报告表13实验所使用的计算机硬件配置登记表部件名称型号...顺序号调整原因12说明可根据需要加行实验报告表176个指定部件的安装顺序记录表部件名称安装顺序号部件名称安装顺序号CPU1风扇2硬盘5电源6主板...
  • 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ有哪些关键特性?其实现原理是怎样的? 关键特性及其实现原理 一、顺序...
  • //结构体数组中元素的数量 通过结构体数组实现学生信息的存储及相关操作,定义len来实时更新结构体数组中实际的学生个数 从数据结构的角度看,一般C语言的管理系统可以用两结构实现,一顺序表即本文采用的...
  • 文章章节常用序号编排(数字序号顺序

    万次阅读 多人点赞 2019-12-05 16:42:33
    因为一直觉得自己的文章序号很乱,遂在网上找了篇序号说明文档,以后自己写的文章将参照此标准。 一、序号 序号Sequence Number,有顺序的号码,如数字序号:1、2、3……,大写汉字也算数字序号,如:一、二、三……...
  • 说明文方法的答题格式

    千次阅读 2021-01-30 18:18:56
    二、说明顺序时间顺序、空间顺序、逻辑顺序逻辑顺序的具体分数:主——次、原因——结果、现象——本质、特征——用途、一般——个别、概括——具体、整体——局部。典型考题:本文使用了什么...
  • 数据结构(二) -- C语言版 -- 线性表的顺序存储

    千次阅读 多人点赞 2020-03-11 12:23:07
      详细说明请跳转:、通用代码实现(顺序表与业务节点分离) 5.1、代码结构树 seqList/ ├── CMakeLists.txt ├── README.md ├── build └── src │ ├── list.c │ └── list.h └── test.c 2 ...
  • Vue 组件间通信六种方式(完整版)

    万次阅读 多人点赞 2019-05-27 11:15:41
    一般来说,组件可以有以下几关系: 如上图所示,A 和 B、B 和 C、B 和 D 都是父子关系,C 和 D 是兄弟关系,A 和 C 是隔代关系(可能隔多代)。 针对不同的使用场景,如何选择行之有效的通信方式?这是我们所要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 217,905
精华内容 87,162
热门标签
关键字:

六种说明顺序