zoukankan      html  css  js  c++  java
  • 数据结构(四)---线性表

    1. 线性表的定义:
      1. 零个或者多个数据元素的有限序列。
      2. 线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
      3. 将线性表记为(a1,...,ai-1,ai,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1为ai的直接前驱元素,ai+1是ai的直接后驱元素。当i=1,2,...,n-1时,ai有且仅有一个直接后继,当i=2,3,...,n时,ai有且仅有一个前驱。
      4. 在较复杂的线性表中,一个数据元素可以由若干个数据组成。
      5. 线性表中的数据类型都是相同的。
    2. 线性表的抽象数据类型
      1.   ADT线性表(List)
          operation 
          InitList(*L): 初始化操作,建立一个空的线性表L。
        
          ListEmpty(L): 判断线性表是否为空表,若线性表为空,返回true,否则返回false。
        
           ClearList(*L): 将线性表清空。 GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e。
        
           LocateElem(L,e): 在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。
        
           ListInsert(*L,i,e): 在线性表L中第i个位置插入新元素e。
        
           ListDelete(*L,i,*e): 删除线性表L中第i个位置元素,并用e返回其值。
        
           ListLength(L): 返回线性表L的元素个数。
        endADT
        
      2. 例如实现两个线性表的并集操作。即要使集合A=A∪B,说白了就是把存在于集合B但不存在于集合A的元素插入到A中。ADT代码省略。
    3. 线性表的顺序存储单元
      1. 顺序存储定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
      2. 顺序存储方式:可以使用一维数组实现顺序存储结构。
      3. 数据长度和线性表长度区别:由于线性表长度是表中数据元素的个数,随着线性表的插入和删除操作的进行,这个量是变化的,但是在任意时刻,线性表的长度应该小于数组的长度
      4. 地址的计算方法(线性表数据的查询):
        1. 存储器中的每个存储单元都有自己的编号,这个编号称为地址
        2. 假设占用的是c个存储单元,那么线性表中第i+1个数据元素的存储位置和第i个数据元素的存储位置满足如下关系(LOC为获取存储位置的函数):LOC(ai+1) =LOC(ai)+c,所以对于第i个数据元素ai的存储位置可以由a1推算而出:LOC(ai+1) =LOC(a1)+c*(i-1)。
        3. 因此根据以上公式,可以随时得到线性表的任意位置的地址,不断第一个还是最后一个,都是相同的时间。那么对线性表每个位置存入或者取出数据,对于计算机都是相等的时间,也就是说时间复杂度为O(1)。
  • 相关阅读:
    springmvc 之 url映射restful 及 ant
    springmvc 之 处理方法的返回值类型
    springmvc 之 数据处理
    springmvc 之 使用注解开发springmvc
    springmvc 之 配置及流程
    springmvc 之 springmvc简介,开发步骤
    mybatis 之 mybatis整合spring
    mybatis 之 mybatis缓存
    mybatis 之 mybatis的映射
    SuperMap iClient3D for WebGL教程 水面特效制作
  • 原文地址:https://www.cnblogs.com/bjm1/p/10485786.html
Copyright © 2011-2022 走看看