c言語によるリニアテーブルの基本機能の実現
2113 ワード
#include
#include
// c c++: 1. c #include c++ #include
//2.c# c++ ( )( ) c
//3.c cpp(c plus plus),c++
#define LISTSIZE 100//
typedef struct{
int *data;// int *, int,p
int len;
int MAXSIZE;
}sqlist;
//c typedef, sqlist sq1;
// & , ,
// , , ,
int init(sqlist *l){
l->data=(int *)malloc(sizeof(int)*LISTSIZE);// LISTSIZE ,l->data
if(l->data==NULL){
return -1;
}
//sizeof(int) int
//malloc(sizeof(int)) int
//malloc: ,
//(int*)malloc(sizeof(int)) int
l->len=0;
l->MAXSIZE=LISTSIZE;
printf("initial finish
");
return 0;
}
int getlen(sqlist sq){
return sq.len;
}
int getelem(sqlist sq,int i){
return sq.data[i-1];
}
int locate(sqlist sq,int x){
int i;
for(i=0;isq->len+1){
return -1;
}
for(j=sq->len;j>=i;j--){
sq->data[j]=sq->data[j-1];
}
sq->data[i-1]=x;
sq->len++;
return 0;
}
int deleteElem(sqlist *sq,int i){
int j;
if(i<1||i>sq->len){
return -1;
}
for(j=i;jlen;j++){
sq->data[j-1]=sq->data[j];
}
sq->len--;
return 0;
}
void displist(sqlist sq){
int i;
for(i=1;i<=sq.len;i++){
printf("%d ",sq.data[i-1]);
}
printf("
");
}
void main(){
int i=1;
sqlist sq;
init(&sq);
for(i=1;i<=10;i++){
if(!insert(&sq,i,i*i)){
printf(" %d %d
",i,sq.data[i-1]);
}
}
printf("len:%d
",getlen(sq));
displist(sq);
insert(&sq,4,888);
printf("len:%d
",getlen(sq));
displist(sq);
deleteElem(&sq,4);
printf("len:%d
",getlen(sq));
displist(sq);
printf("%d
",locate(sq,81));
printf("%d
",getelem(sq,4));
system("pause");
}