线性表的顺序存储结构,顺序表基本运算的实现
#include //输入输出头文件
#include //malloc和free都在这个头文件里
#define MaxSize 50
typedef struct
{
int date[MaxSize]; //存放线性表中的元素,为了简便设置成整型
int length; //存放线性表的长度
}SqList; //顺序表类型
int main()
{
int a[10];
int i,n,p;
for(i=0;ilength=k;//设置L的长度k
}
/***************************初始化线性表**************************/
void InitList(SqList * &L)
{
L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间
L->length=0;//置空线性表的长度为0
}
/************************************销毁线性表**************/
void Destroy(SqList * &L)
{
free(L);//释放L所指的顺序表空间
}
/*******************判断线性表是否为空表******************/
bool Listkong(SqList * &L)
{
return(L->length==0);
}
/*********************求线性表的长度**********************/
int ListLength(SqList * &L)
{
return(L->length);
}
/**************************输出线性表******************************/
void DispList(SqList* L)
{
//int i;
for (int i=0;ilength;i++)
printf("%d ",L->date[i]);
printf("\n");
}
/****************************求线性表中的某个数据元素值********************/
bool GetElem(SqList * &L,int i,int &e)
{
if (iL->length)
{
return false;//参数错误时返回false
}
e=L->date[i-1]; //取元素值
return true; //成功找到元素时返回true
}
/*****************按元素值查找*******************/
int Locate(SqList * &L,int e)
{
int i=0;
while (ilength&&L->date[i]!=e)
{
i++;
}
if (i>=L->length)
{
return 0;
}
else
return i+1;
}
/***********插入数据元素*************/
bool charu(SqList * &L,int i,int e)
{
int j;
if (iL->length+1)
{
return false;
}
i--;
for (j=L->length;j>i;j--)
{
L->date[j]=L->date[j-1];
}
L->date[i]=e;
L->length++;
return true;
}
/*************删除数据元素**************/
bool Deleteen(SqList * &L,int i,int &e)
{
int j;
if(iL->length)
return false;
i--;
e=L->date[i];
for (j=i;jlength-1;j++)
{
L->date[j]=L->date[j+1];
}
L->length--;
return true;
}