[데이터 구조 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 언어 개선 과 상세 한 설명 을 했 고 책 에서 언급 하지 않 은 더 많은 순서 표 조작 함 수 를 추가 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.