顺序表的类型定义
#define MAXSIZE 100 //最大长度
typedef struct
{
ElemType *elem; //指向数据元素的基本地址
int length; //线性表当前长度
}SqList;
图书表的顺序存储类型定义
#define MAXSIZE 100 //最大长度
typedef struct //图书信息定义
{
char no [20]; //图书ISBN
char name [50];
char price;
}Book;
typedef struct
{
Book *elem; //存储空间的基本地址
int length; //图书表中当前图书个数
}SqList;//图书表的顺序存储结构类型为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
viod DestyoyList(SqList &L)
{
if(L.elem)delete[]L.elem;//释放存储空间
}
清空线性表L
viod 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;
}
取值
int GetElem(SqList ,int i,ElemType &e)
{
if(i<||i>L.length)return error;//判断i值的合理性
e=L.elem[i-1];//第i-1的单元存储着第i个数据
return OK;//随机存取
}
查找
int LocateElem(SqList ,int i,ElemType &e)
{
for(i=0;i<L.length;i++)
if(L.elem[i]==e) return i+1;
return 0;
}
插入
Status InitList_Sq(SqList *L,int i ,ElemType e) //构造一个空的顺序表L
{
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;
}
删除
Status DeleteList_Sq(SqList *L,int i)
{
if(i<1||i>L.length+1) return error;//i值不合法
for (j=i;j=L.length-1;j++)
L.elem[i-1]=L.elem[j];//将删除元素之后的元素前移
--L.length;//表长减1
return OK;
}