[c 언어] 데이터 구조 - 동적 저장 순서 표 의 확장, 합병 (소스 코드)

#include 
#include 
#include 
#include  
#define MAXSIZE 3

//     
typedef int elemtype;
typedef struct sqList{
	elemtype *data;
	int size;			//     
	int capacity; 			//     
}sqList; 

//   
void init_sqList(sqList *Psql)
{
	assert(Psql);			//    0         
	Psql->data=(elemtype *)malloc(MAXSIZE*sizeof(elemtype));
	Psql->capacity=MAXSIZE;
	Psql->size=0;
}
//  
void expland_sqList(sqList *Psql,int n)
{
	assert(Psql);
	if(Psql->size=Psql->capacity)	//   
	{
		Psql->capacity*=n;	//   n  
		elemtype *new_data=(elemtype*)malloc(Psql->capacity*sizeof(elemtype));	//    realloc   
		memcpy(new_data,Psql->data,Psql->size*sizeof(elemtype));	//  src                n      dest             
		free(Psql->data);
		Psql->data=new_data;
		printf("    
"); } } // sqList union_sqList(sqList *La,sqList *Lb) // { assert(La); assert(Lb); sqList Lc; Lc.size=La->size+Lb->size; Lc.capacity=Lc.size; Lc.data=(elemtype *)malloc(Lc.capacity*sizeof(elemtype)); memcpy(Lc.data,La->data,La->size*sizeof(elemtype)); memcpy(Lc.data+La->size,Lb->data,Lb->size*sizeof(elemtype)); return Lc; } // , void insert_sqList(sqList *Psql,int i,elemtype e) { int j; assert(Psql); if(i<1||i>Psql->size+1||Psql->size==Psql->capacity) // i { printf("The position is wrong
"); return; } for(j=Psql->size-1;j>=i-1;j--) // Psql->data[j+1]=Psql->data[j]; Psql->data[i-1]=e; Psql->size++; printf("
"); } void print_sqList(sqList *Psql) { assert(Psql); int i; if(Psql->size==0) { printf("NULL
"); return; } for(i=0;isize;i++) { printf("%d ",Psql->data[i]); } printf("
"); } int main() { sqList La,Lb,Lc; elemtype e;int i,t; while((i=getchar())!='#') // # { switch(i) { case '1':init_sqList(&La);init_sqList(&Lb);printf("
");break; // case '2':print_sqList(&La);print_sqList(&Lb);break; // case '3':printf("
"); // scanf("%d %d",&t,&e); insert_sqList(&La,t,e); insert_sqList(&Lb,t,e); break; case '4':expland_sqList(&La,2);expland_sqList(&Lb,2);break; // case '5':Lc=union_sqList(&La,&Lb);printf("
");break; // case '6':print_sqList(&Lc);break; // } } free(La.data);free(Lb.data);free(Lc.data); return 0; }

좋은 웹페이지 즐겨찾기