데이터 구조 - c 언어 - 비 체감 질서 있 는 순서 표 에 요소 x 를 삽입 하여 순서 표 의 질서 성 을 유지 합 니 다.

2781 단어 데이터 매듭
실험 목적
알고리즘 을 프로그램 코드 로 변환 하 는 과정 을 익히 고 순서 표 의 논리 적 구조 특성 을 파악 하 며 순서 표 저장 구조의 C 언어 설명 방법 을 익 힌 다.순서 표 의 기본 동작: 찾기, 삽입, 삭제, 통합 등 순서 표 의 무 작위 액세스 특성 을 파악 합 니 다.
실험 내용
(1) 비 체감 질서 있 는 순서 표 에 요소 x 를 삽입 하여 순서 표 의 질서 성 을 유지한다.
 
 
 
 
 
 
 
#include
#include

#define LIST_INIT_SIZE 10//              
#define LISTINCREMENT 5//            
#define OVERFLOW 0
#define OK 1
 
typedef struct{
	int *elem;//       
	int length;//      
	int listsize;//         
}Sqlist;

//        
int InitList(Sqlist *l){
	l->elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int)); 
	if(!l->elem){
		printf("        !
"); exit(OVERFLOW); } l->length = 0; l->listsize = LIST_INIT_SIZE; return OK; } // int ListInsert(Sqlist *l,int i,int e){ if(!l->length){ l->length++; l->elem[l->length-1] = e; return OK; }else if(i<1||i>l->length+1){ printf(" , !
"); exit(OVERFLOW);// } if(l->length==l->listsize){// int *newbase; newbase = (int *)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase){ printf(" !
"); exit(OVERFLOW); } l->elem = newbase; l->listsize += LISTINCREMENT; } int *p; p = l->elem+l->length-1; while(p>=l->elem+i-1) *(p+1) = *p--; l->elem[i-1] = e; l->length++; return OK; } // int Insert(Sqlist *l,int e){ int i=0,*p=l->elem+l->length-1;//i while(e>=l->elem[i]) i++; if(l->length==l->listsize){ int *newbase; newbase = (int *)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase){ printf(" !
"); exit(OVERFLOW); } l->elem = newbase; l->listsize += LISTINCREMENT; } while(p>=l->elem+i) *(p+1)=*p--; l->elem[i] = e; l->length++; return OK; } // void PrintList(Sqlist *l){ for(int i=0;ilength;i++){ printf("%d ",l->elem[i]); } } main(){ int flag=1,i=1,num;//i i 1 0 Sqlist l; InitList(&l); printf(" :
"); while(flag){// int num; scanf("%d",&num); ListInsert(&l,i,num); i++;// i-1 length printf("
?0 no , 1 yes\t"); scanf("%d",&flag); } PrintList(&l); printf(" :
"); scanf("%d",&num); Insert(&l,num);// /*// i=1; //i while(num>=l.elem[i-1]&&i<=l.length) i++; ListInsert(&l,i,num);*/ printf(" :
"); PrintList(&l); }

좋은 웹페이지 즐겨찾기