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

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

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

顺序表的类型定义:

#define  MAXSIZE 100     //最大长度

typedef  struct {

ElemType  *elem;     //指向数据元素的基地址

int  length;          //线性表的当前长度

}SqList;

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

Status InitList_Sq(SqList &L){    //构造一个空的顺序表L

L.elem=new ElemType[MAXSIZE];   //为顺序表分配空间

if(!L.elem) exit(OVERFLOW);       //存储分配失败

L.length=0;    //空表长度为0

return OK;

}

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

Status InitList_Sq(SqList *L){    //构造一个空的顺序表L

L-> elem=new ElemType[MAXSIZE];   //为顺序表分配空间

if(! L-> elem) exit(OVERFLOW);       //存储分配失败

L-> length=0;                  //空表长度为0

return OK;

}

销毁线性表L

void DestroyList(SqList &L){

if (L.elem) delete[]L.elem;    //释放存储空间

}

清空线性表L

void ClearList(SqList &L) {

L.length=0;                //将线性表的长度置为0

}

求线性表L的长度

int GetLength(SqList L){

return (L.length);

}

判断线性表L是否为空

int IsEmpty(SqList L){

if (L.length==0) return 1;

else return 0;

}

获取线性表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;

}

在线性表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;

}

将线性表L中第i个数据元素删除

Status ListDelete_Sq(SqList &L,int i,ElemType &e){

if((i<1)||(i>L.length)) return ERROR;  //i值不合法

e=L.elem[i-1];                              //将欲删除的元素保留在e中

for (j=i;j<=L.length-1;j++)

    L.elem[j-1]=L.elem[j];       //被删除元素之后的元素前移

--L.length;                       //表长减1

return OK;

}

D_S 线性表的顺序表示和实现的更多相关文章

  1. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  2. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

  3. javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现

    线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...

  4. c/c++ 线性表之顺序表

    线性表之顺序表 存储在连续的内存空间,和数组一样. 下面的代码,最开始定义了一个能存8个元素的顺序表,当超过8个元素的时候,会再追加开辟空间(函数:reInit). 实现了以下功能: 函数 功能描述 ...

  5. 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素

    /** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...

  6. 线性表之顺序栈C++实现

    线性表之顺序栈 栈是限定仅在表尾(栈顶)进行插入删除操作的线性表,FILO:先进后出 一.顺序栈的头文件:SeqStack.h //顺序栈头文件 #include<iostream> us ...

  7. 线性表之顺序表C++实现

    线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...

  8. 线性表中顺序表的的理解和实现(java)

    线性表的顺序表示指的是用一组地址连续的存储单元以此存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像.通常,称这种存储结构的线性表为顺序表.特点是:逻辑上相邻的数据元素,其物理次序上也 ...

  9. [C++]数据结构:线性表之顺序表

    1 顺序表 ADT + Status InitList(SeqList &L) 初始化顺序表 + void printList(SeqList L) 遍历顺序表 + int ListLengt ...

随机推荐

  1. Orleans 之 监控工具的使用

    这一节,我们来说说orleans 中的几个实用工具,OrleansHost.OrleansCounterControl.OrleansManager.ClientGenerator. 1.Orlean ...

  2. 【循序渐进学Python】6.Python中的函数

    1. 创建函数 一个函数代表一个行为并且返回一个结果(包括None),在Python中使用def关键字来定义一个函数,如下: def hello(name): print 'hello,' + nam ...

  3. 单例(C#版)

    单例: 一个类只有一个实例.巧妙利用了编程语言的一些语法规则:构造函数private, 然后提供一个public的方法返回类的一个实例:又方法和返回的类的实例都是static类型,所以只能被类所拥有, ...

  4. ASP.NET或WinFrom中获取汉子的拼音首字母

    1.获得一个字符串的每个字的拼音首字母构成所需的字符串 #region  获取首字母 /// <summary>         /// 这个办法是用来获得一个字符串的每个字的拼音首字母构 ...

  5. EffectiveJava——接口优于抽象类

    Java程序设计语言提供两种机制,可以用来定义允许多个实现的类型:接口和抽象方法,这两者直接醉为明显的区别在于,抽象类允许某些方法的实现,但接口不允许,一个更为重要的区别在于,为了实现由抽象类定义的类 ...

  6. Follow me to learn how to use mvc template

    Introduction After having gone through many project: Project A Project B Project C I start to write ...

  7. [.NET] 使用C#开发SQL Function来提供数据 - 天气预报

    [.NET] 使用C#开发SQL Function来提供数据 - 天气预报 范例下载 范例程序代码:点此下载 问题情景 开发人员在设计一些数据汇整的系统服务时,可能会选择WCF.WebAPI.Sign ...

  8. JS 面向对象 编程设计

    面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...

  9. 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

    无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...

  10. 在SharePoint中无代码开发InfoPath应用: 获取当前用户信息

    很多种不同的场景下,会需要得到当前的用户信息,例如需要根据当前用户判断组,进而控制权限. 首先InfoPath提供了一个userName方法,来实现这个目的,不过这个方法的问题是只能获得不包含域名的用 ...