顺序表格式

#define MAXSIZE 

typedef struct{

ElemType*elem;

int length;

}

SqList;//定义顺序表类型

SqList L;//定义变量L,L是SqList这种类型的,L是个顺序表

数据结构学习日记(一)_存储空间

 

若上述中L被定义为指针,即:

SqList * L;

可表示为:L->elem;

     L->length;

 

线性表的基本操作:

数据结构学习日记(一)_顺序表_02

 

 数据结构学习日记(一)_sql_03

 

 数据结构学习日记(一)_存储空间_04

 

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

Status lnitList_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;

}

 

顺序表的取值(根据位置 i 获取相应位置数据元素的内容)

int GetElem(SqList L, int i, ElemType &e){

  if(i<1||i>L,length) return ERROR;

    //判断i值是否合理,若不合理,返回ERROR

  e = L.elem[i - 1];

return OK;  //第i-1的单元存储着第i个数据

}

 

顺序表的查找

在线性表L中查找与指定值e相同的数据元素的位置

从表的一端开始,逐个进行记录的关键字和给定值的比较。找到,返回该元素的位置序号,未找到,返回0。

int LocateElem(SqList L,ElemType e){

//在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)

  for(i = 0;i<L,length;i++)

    if(L.elem[i] == e)

      return i+1;//查找成功,返回序号

    return 0;//查找失败,返回0

}

 

顺序表插入

Status Listlnsert_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;i>=i-1;i++)

{

  L.elem[j+1] = l.elem[j];//插入位置及之后的元素后移

  L.elem[i-1] = e;//将新元素e放入第i个位置  

  L.length++;//表长增1

  return OK;

}

 

顺序表删除

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;

 }