#include<stdio.h>
#include <malloc.h>
#define SIZE 100
#define INCREMENT_SIZE 10
typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;
bool InintList_Sq(Sqlist &L){
L.elem = (int*)malloc(SIZE*sizeof(int));
if(!L.elem)
return false;
L.length = 0;
L.listsize = SIZE;
return true;
}
bool Insert(Sqlist &L,int pos,int data){
int *newbase;
if(pos < 1||pos > L.length+1)
return false;
if(L.length >= L.listsize){
newbase = (int*)realloc(L.elem,(L.listsize+INCREMENT_SIZE)*sizeof(int));
if(!newbase)
return false;
L.elem = newbase;
L.listsize += INCREMENT_SIZE;
}
// for(int i=L.length-1;i>=pos-1;i--)
// L.elem[i+1] = L.elem[i];
// L.elem[pos-1] = data;
// L.length += 1;
int *q = &L.elem[pos-1];
for(int *p=&L.elem[L.length-1];p>=q;p--)
*(p+1) = *p;
*q = data;
L.length++;
return true;
}
int main(){
int pos;int data;
Sqlist sql;
InintList_Sq(sql);
printf("请输入输入数据的个数:");
scanf("%d",&sql.length);
for(int i=0;i<sql.length;i++)
scanf("%d",&sql.elem[i]);
printf("\n");
for(int i=0;i<sql.length;i++)
printf("%d ",sql.elem[i]);
printf("\n");
printf("请输入输入数据的插入位置:");
scanf("%d",&pos);
printf("请输入输入数据的插入位置:");
scanf("%d",&data);
Insert(sql, pos, data);
for(int i=0;i<sql.length;i++)
printf("%d ",sql.elem[i]);
printf("\n");
return 0;
}