涉及顺序表的各种操作
构造 插入 扩容 查找 删除 遍历等基本内容
#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);
}
void expand(Vector* vector) {
int* old_data=vector->data;
vector->size=vector->size * 2;
vector->data = (int *)malloc(sizeof(int) * vector->size);
for(int i=0;i
length;i++){
vector->data[i]=old_data[i];
}
free(old_data);
}
int insert(Vector *vector,int loc,int value) {
if(loc < 0 || loc > vector->length){
printf("failed\n");
return ERROR;
}
if(vector->length >= vector->size){
expand(vector);
}
for(int i=vector->length;i>loc;--i){
vector->data[i]=vector->data[i-1];
}
vector->data[loc]=value;
vector->length++;
printf("success\n");
return OK;
}
int search(Vector *vector, int value) {
for(int i=0;i < vector->length; i++){
if(vector->data[i]==value){
printf("success\n");
return i;
}
}
printf("failed\n");
return -1;
}
int delete_node(Vector* vector, int index) {
if(index < 0 || index >= vector->length){
printf("failed\n");
return ERROR;
}
for(int i=index+1; i < vector->length; i++){
vector->data[i-1]=vector->data[i];
}
vector->length--;
printf("success\n");
return OK;
}
void print(Vector* vector) {
for(int i=0;i
length;i++)
{
if(i>0){
printf(" ");
}
printf("%d",vector->data[i]);
}
printf("\n");
}
void clear(Vector* vector) {
free(vector->data);
free(vector);
}
int main() {
Vector *a = (Vector *)malloc(sizeof(Vector));
init(a, 20);
int m;
int t[100],b[100],c[100];
scanf("%d",&m);
for(int i=0;i