// 数据结构-- 线性表-顺序表
// 内存分配方式: 动态分配
typedef struct{
int* data;
int maxsize,length;
}SqList;
int IncreaseMaxSize(SqList *sqlist,int newMaxSize){
if (newMaxSize <= sqlist->maxsize) return 0;
sqlist->maxsize = newMaxSize;
newList = (int *)malloc(sizeof(int )*newMaxSize);
for(int i=0;i<sqlist->length;i++){
newList[i] = sqlist->data[i];
}
free(sqlist->data);
sqlist->data = newList;
return 1;
}
int InitSqList(SqList *sqlist){
sqlist->data = (int *)malloc(sizeof(int)*INITSIZE);
sqlist->maxsize = INITSIZE;
sqlist->length = 0;
if(sqlist->data == NULL) return 0;
return 1;
}
// 以下操作均为按位查找
// 增
int InsertElem(SqList *sqlist,int index,int e){
if(index<1 || index>sqlist->length+1) return 0;
if(sqlist->length >= sqlist->maxsize) return 0;
for(int j=sqlist->length;j>=index;j--){
sqlist->data[j] = sqlist->data[j-1];
}
sqlist->data[index-1] = e;
sqlist->length++;
return 1;
}
// delet
int DeletElem(SqList*sqlist,int index){
if(index<1||index >sqlist->length+1) return -999;
int res;
res = sqlist->data[index-1];
for(int j=index;j<sqlist->length;j++){
sqlist->data[j-1] = sqlist->data[j];
}
sqlist->length --;
return res;
}
// fine by value return index
int FindElem(SqList* sqlist,int v){
int index = 0;
for (index;index < sqlist->length;index++){
if(sqlist->data[index] == v) return index+1 ;
}
return -999;
}
// test opt
int main()
{
SqList MyList;
int r1,r2,r3,r4,r5,r6;
r1 = InitSqList(&MyList);
printf("%d\n",r1);
r2 = InsertElem(&MyList,1,2);
r3 = InsertElem(&MyList,1,3);
r4 = InsertElem(&MyList,1,4);
printf("bool:%d%d%d\n",r2,r3,r4);
printf("fristElem:%d\n",MyList.data[0]);
r5 = DeletElem(&MyList,1);
printf("bool:%d\n",r5);
printf("res:%d\n",r5);
printf("firstElem:%d\n",MyList.data[0]);
r6 = FindElem(&MyList,2);
printf("bool:%d\n",r6);
printf("index:%d\n",r6);
return 0;
}