//--------------------------顺序表的存储结构--------------------------
#define MAXSIZE 100 //顺序表可能达到的最大长度
typedef struct{
Elemtype *elem; //存储空间的基地址
int length; //当前长度
}SqList; //顺序表的结构类型SqList(俗称结构名为SqList)
//----------------------多项式的顺序存储结构类型定义------------------
#define MAXSIZE 100 //多项式可能达到的最大长度
typedef struct{
float cofe; //系数
int expn; //指数
}Polynomial; //结构名
typedef struct{
Polynomial *elem; //存储空间的基地址
int length; //多项式中当前项的个数
}SqList; //多项式的顺序存储结构类型为SqList
//---------------------图书表的顺序存储结构的类型定义----------------
#define MAXSIZE 10000 //图书表可能达到的最大长度
typedef struct{
char no[20]; //图书ISBN(图书的编号)
char name[50]; //图书名字
float price; //图示价格
}Book;
typedef struct{
Book *elem; //存储空间的基地址
int length; //图书表中当前图书的个数
}SqList; //图书表的顺序存储结构类型为Sqlist
//以上述定义为前提的情况下
SqList L; //变量定义语句
//将L定义为SqList类型的变量,便可以使用L.elem[i-1]访问表中位置序号为i的图书的相关记录
顺序表基本操作的实现
//----------------------顺序表的初始化------------------------------
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间
L.length=0;//空表长度为零
return OK; //Status为OK
}
//---------------------顺序表的取值---------------------------------
Status Getelem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return ERROR;判断i值是否合理,若不合理返回ERROR
e=L.elem[i-1];
return OK;
}
//--------------------顺序表的查找------------------------------
int LocateElem(SqList L,ElemType e)//按值查找
{
//在顺序表中查找值为e的元素,返回其位置序号
for(i=0;i<L.length;i++)
if(L.elem[i]==e)
return i+1;//查找成功,返回位置序号i+1
return 0;//查找失败,返回0
}
//-----------顺序表的插入--------------
Status ListInsert(SqList &L,int i,ElemType e)
{
//在顺序表L中的第i个位置插入新元素e,i值得合法范围为1<=i<=L.length+1
if((i<1)||(i>L.length+1)) //i值不合法
return ERROR;
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 ListDelete(SqList &L,int i)
{
//在顺序表L中删除第i个元素,i值得合法范围为1<=i<=L.length
if(i<1||i>L.length )//i值不合法
return ERROR;
for(j=i;j<=L.length-1;j++)
L.length[j-1]=L.length[j];//被删除元素之后的元素前移
--L.length;//表长减1
return OK;
}