顺序表
静态分配方式定义顺序表
typedef struct
{
int data[10];
int length;
}SqList;
动态分配方式定义顺序表
typedef struct
{
int *data;
int capacity;
int length;
}SeqList;
【顺序表(静态分配)】插入数据
bool ListInsert(SqList &L,int i,ElemType e)
{
if(i<1||i>L.length+1)
return false;
if(L.length>=MaxSize)
return false;
for(int j=L.length;j>=i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
++L.length;
return true;
}
【顺序表(静态分配)】删除数据
bool ListDelete(SqList &L,int i,ElemType &e)
{
if(i<1||i>L.length)
{
return false;
}
e=L.data[i-1];
for(int j=i;j<L.length;j++)
{
L.data[j-1]=L.data[j];
}
--L.length;
return true;
}
【顺序表(静态分配)】按值查找数据
int LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
【顺序表(静态分配)】打印数据
void PrintList(SqList L)
{
for(int i=0;i<L.length;i++)
{
printf("%4d",L.data[i]);
}
printf("\n");
}
测试
int main()
{
SqList L;
bool ret;
ElemType del;
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.length=3;
ret=ListInsert(L,2,60);
if(ret)
{
printf("插入成功\n");
PrintList(L);
}
else
{
printf("插入失败\n");
}
ret=ListDelete(L,1,del);
if(ret)
{
printf("删除成功\n");
printf("删除元素值为 %d\n",del);
PrintList(L);
}else
{
printf("删除失败\n");
}
ret=LocateElem(L,60);
if(ret)
{
printf("查找成功\n");
printf("元素位置为 %d\n",ret);
}else{
printf("查找失败\n");
}
return 0;
}