[데이터 구조 C 언어] 순서 표 기초 와 상용 조작 함수

5296 단어 데이터 구조
순서 표 는 데이터 구조 에서 가장 기본 적 인 데이터 저장 방식 으로 순서 표 의 기본 조작 은 다음 과 같다.
#include 
#include 

#define INITSIZE 100

typedef int ElemType;	//           ,               
typedef struct 	//     ---  :            ;       ;         
{
	ElemType *data;
	int length;
	int listsize;
}sqlist;

void initlist(sqlist *L)	//      
{
	L->data = (ElemType *)malloc(sizeof(ElemType)*INITSIZE);
	L->length = 0;
	L->listsize = INITSIZE;
}

길이 함수: 순서 표 의 실제 길 이 를 되 돌려 줍 니 다:
int getlen(sqlist *L)	
{
	return(L->length);
}

수치 함수: 순서 표 에 필요 한 위치의 값 을 추출 하여 정 의 된 변수 주소 에 기록 합 니 다.
int getelem(sqlist *L,int i,ElemType *e)	
{
	if(i<1||i>L->length)
		return 0;
	*e = L->data[i-1];
	return 1;
}

포 지 셔 닝 함수: 찾 은 요소 의 실제 위 치 를 되 돌려 줍 니 다:
int locate(sqlist *L,ElemType x)	//            
{
	int i = 0;
	while(ilength)
		if(L->data[i]==x)
			return i+1;	//  return i;      
		else i++;
	return 0;
}

삽입 함수: 지정 한 위치 에 지정 한 수 를 삽입 합 니 다:
int insert(sqlist *L,int i,ElemType x)	//    
{
	int j;
	if(i<1||i>L->length+1)	//        
		return 0;
	if(L->length==L->listsize)	//         ,   ,      
	{
		L->data = (ElemType *)realloc(L->data,(L->listsize+1)*sizeof(ElemType));
		L->listsize++;
	}
	for(j=L->length-1;j>=i-1;j--)	//       
		L->data[j+1]=L->data[j];
	L->data[i-1] = x;
	L->length++;
	return 1;
}

삭제 함수: 지정 한 위치의 요 소 를 삭제 하고 삭 제 된 요 소 를 준 비 된 주소 에 기록 합 니 다:
int Delete(sqlist *L,int i,ElemType *e)	//    
{
	int j;
	if(i<1||i>L->length)
		return 0;
	*e = L->data[i-1];	//             
	for(j=i;jlength;j++)	//      
		L->data[j-1] = L->data[j];
	L->length--;
	return 1;
}

빠 른 정렬 함수:
void HoareSort(sqlist *L,int low,int high)
{
    int i, j, temp;
    if(lowdata[i];  //         
        while(idata[j]>=temp)  // while      【          】
                j--;                        //        
            L->data[i] = L->data[j];

            while(idata[i]data[j] = L->data[i];
        }
        L->data[i] = temp;        //             【i,j     】,                    
        HoareSort(L,low,i-1);     //                        ,                  
        HoareSort(L,i+1,high);    //                    ,                  
    }   
}       //  :             【   】、【   】、【   】、【   】
        //          ,              【        “if(ilength-1);
}

이 표 합병 함수: 두 개의 증가 표 합병 및 증가 유지:
void merge(sqlist *L1, sqlist *L2, sqlist *L)		//              
{
	int i = 0, j = 0;
	initlist(L);	//      
	while(ilength && jlength)	//i j           ,    ,           ,                ,     。
		if(L1->data[i]data[j])
		{
			insert(L,L->length+1,L1->data[i]);
			i++;
		}
		else
		{
			insert(L,L->length+1,L2->data[j]);
			j++;
		}
//                         ,   +                     		
	while(ilength)
	{
		insert(L,L->length+1,L1->data[i]);
		i++;
	}
	while(jlength)
	{
		insert(L,L->length+1,L1->data[i]);
		j++;
	}
}

이동 함수: 전체 표 의 기 수 를 짝수 앞으로 이동 합 니 다:
void remove(sqlist *L)		//          
{
	int i = 0, L->length-1;
	ElemType temp;
	while(idata[i]%2!=0)	//    ,      ,          
			i++;
		while(idata[j]%2==0)	//    ,      ,          
			j--;
		if(idata[i];
			L->data[i] = L->data[j];
			L->data[j] = temp;
			i++;
			j--;
		}
	}
}

출력 함수:
void list(sqlist *L)	//     
{
	int i;
	for(i = 0;ilength;i++)
		printf("%-3d",L->data[i]);
	printf("
"); }

최대 함수 찾기:
void LookForPole(sqlist *L,int *max,int *min)	//      
{
	*max = *min = L->data[0];
	for (int i = 0;ilength;i++)
	{
		if(L->data[i]>*max)
			*max = L->data[i];
		else if(L->data[i]data[i];
	}
}

주 함수 디 버 깅 (삭제 및 최대 값 삽입):
int main()
{
	sqlist L;
	ElemType e ;
	int i,j,k,m,n,max,min;
	initlist(&L);
	printf("        ?");
	scanf("%d",&j);
	L.length = j;
	printf("            ?");
	scanf("%d",&k);
	printf("         (  1,  2)");
	scanf("%d",&m);
	printf("  %d  ",j);
	for(i=0;i

주 함수 디 버 깅 (빠 른 정렬):
int main()
{
    sqlist L;
    int j;
    initlist(&L);
    printf("        ?");
    scanf("%d",&j);
    L.length = j;
    printf("   %d         :",j);
    for(int i=0;i

본 논문 의 특색: 링크 식 순서 표를 배우 기 전에 반드시 파악 해 야 할 일반 구조 체 를 운반 체 로 하 는 순서 표 의 거의 모든 상용 작업 을 포함 하고 모든 함수 집적 함수 의 중요 한 핵심 알고리즘 에 대해 한 마디 한 마디 주석 을 상세 하 게 설명 했다.
일부 코드 출처: 진 옥 평 은 을 바탕 으로 엄격 한 C 언어 개선 과 상세 한 설명 을 했 고 책 에서 언급 하지 않 은 더 많은 순서 표 조작 함 수 를 추가 했다.

좋은 웹페이지 즐겨찾기