定义结构体
typedef struct{
int data[MAXSIZE]; //MAXSIZE为最大容量
int length; //当前长度
} Array;
创建顺序表
/*
需要接受一个已知的数组,以及该数组的长度
按顺序将数组内的值,赋给顺序表结构体中的数组
返回一个顺序表的结构体
*/
Array array_create(int a[],int length){
Array b;
int i=0;
for(i;i<length;i++)
b.data[i]=a[i];
b.length=length;
return b;
}
打印顺序表
void array_print(Array a){
int i=0;
for(i;i<a.length;i++)
printf("%d ",a.data[i]);
printf("\n");
}
插入
/*
判断插入前是否超出最大容量,以及插入位置是否合理
判断插入后是否超出最大容量
将插入位置后面的数据全部往后移动一个位置
插入数据
顺序表长度增加
*/
bool array_insert(Array *a,int i,int e){
if(i<1||i>a->length+1)
return false;
if(a->length>=MAXSIZE)
return false;
int j=a->length;
for(j;j>=i;j--)
a->data[j]=a->data[j-1];
a->data[i-1]=e;
a->length+=1;
return true;
}
这里注意不能直接使用a.length,应该使用(*a).length,也可以写作a->length。
删除
bool array_delete(Array *a,int i){
if(i<1||i>a->length)
return false;
for(;i<a->length;i++)
a->data[i-1]=a->data[i];
a->length-=1;
return true;
}
这里可以多传一个指针进去,带出删掉值。
按值查找
int serchwith_value(Array a,int v){
int i;
for(i=0;i<a.length;i++)
if(a.data[i]==v)
return i+1;
return 0;
}