#include
#include
#define ERROR 0
#define OK 1
typedef struct Vector {
int size, length;
int *data;
} Vector;
void init(Vector *vector, int size) {
vector->size = size;
vector->length = 0;
vector->data = (int *)malloc(sizeof(int) * size);
}
int insert(Vector *vector, int loc, int value) {
//如果传入的参数loc 比 0小,或者比len大,那么直接返回ERROR
if(loc<0||loc>vector->length){
return ERROR;
}
//如果已经到上限,也就是说 顺序表中元素数量vector->length大于等于顺序表的容量 vector->size 直接返回ERROR
if(vector->length>=vector->size){
return ERROR;
}
//每次向指定位置loc插入一个元素之前,都要将loc之后的所有元素顺次向后移动,从而给新的元素腾出一个空间
for(int i=vector->length;i>loc;--i){
vector->data[i] = vector->data[i-1];
}
//将插入的元素值value赋给vector->data[loc]
vector->data[loc]=value;
//将顺序表中元素个数加1
vector->length++;
return OK;
}
void clear(Vector *vector) {
free(vector->data);
free(vector);
}
int main() {
Vector *a = (Vector *)malloc(sizeof(Vector));
init(a, 100);
printf("%d\n", insert(a, 1, 0));
printf("%d\n", insert(a, 0, 1));
printf("%d\n", insert(a, 2, 1));
printf("%d\n", insert(a, 1, 2));
printf("%d\n", insert(a, 0, 3));
clear(a);
return 0;
}