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"); }