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

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

顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组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. Azure开发者任务之四:在Azure SDK 1.3中挂载调试器的错误

    我安装了Windows Azure SDK的1.3版本.我试着创建了一个Azure的“Hello World”应用程序. 我按了“F5”,然后我得到了下面这个错误: 我尝试了“Ctrl+F5”:不使用 ...

  2. css中important的用处

    今天看代码时遇到一段不理解的地方. #note_content { line-height: 22px; border: #DEDEDE 1px solid; background: #FAFAFA; ...

  3. eclipse easyexplorer openexplorer

    电脑重装了.. eclipse换成了4.4.2,发现原来的easyexplorer不生效了(原来是4.2),搜了下,换成了open explorer即可. 方式一样,都是丢到eclipse/plugi ...

  4. Win10安装framework3.5

    .NET少不了framewrok,其版本也比较多,默认情况下win7及上版本没有安装framework3.5,但有些软件又需要它,比如arcgis软件在安装时会检测是否存在3.5,如果没有,将不会正常 ...

  5. java中判断字符串是否为数字的方法

    一: //1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); ...

  6. Creating External Lists From Code

    You can create an external list based on an entity (external content type) defined in SharePoint Bus ...

  7. MX4连接后adb无法识别解决方法

    1. 使用android SDK目录中的 android SDK目录\tools 下的android脚本,命令行中执行 android update adb,成功运行后,会在用户名录下产生,C:\Us ...

  8. HorizontalScrollView实现先左滑动后右滑动动画

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...

  9. android 学习运用海马模拟器教程与android环境的搭建

    第三方海马玩模拟器 第一天的学习android采用的模拟器是海马,因此就分享给大家海马模拟器的相关步骤: 海马玩模拟器官网: http://droid4x.haimawan.com 下载相关平台的模拟 ...

  10. iOS— UIScrollView和 UIPageControl之间的那些事

    本代码主要实现在固定的位置滑动图片可以切换. 目录图如下: ViewController.h #import <UIKit/UIKit.h> // 通过宏定义定义宽和高 #define W ...