C 언어 구현 트 리 의 동적 검색 인 스 턴 스 코드
이 예 는 트 리 데이터 구조 저장 기록 집합 시의 동적 검색 방법 을 보 여 줍 니 다.먼저 프로그램 은 construct () 함 수 를 통 해 이미 존재 하 는 구조 체 배열 데 이 터 를 이용 하여 이 진 트 리 를 만 듭 니 다. 트 리 를 만 드 는 과정 에서 모든 노드 의 값 이 왼쪽 서브 트 리 의 노드 보다 크 고 오른쪽 서브 트 리 의 모든 노드 의 값 보다 작 으 며 이 함 수 는 트 리 를 만 드 는 뿌리 지침 을 되 돌려 줍 니 다.그리고 함수 Search (root, name) 를 통 해 찾 습 니 다. 해당 데 이 터 를 찾 으 면 인쇄 합 니 다. 찾 지 못 하면 트 리 에 데 이 터 를 삽입 할 지 여 부 를 선택 할 수 있 습 니 다.
구체 적 인 코드 는 다음 과 같다.
#include
#include
#include
#define NUM 4
struct tree
{
char name[20];
char city[20];
char sex[10];
char age[10];
char job[10];
struct tree *left;
struct tree *right;
};
struct tree Datas[NUM]=
{
"Willing","Tianjing","Female","21","worker",NULL,NULL,
"Tom","Beijing","Male","31","doctor",NULL,NULL,
"Sun","Weifang","Male","24","student",NULL,NULL,
"Marry","Shanghai","Female","19","techer",NULL,NULL
};
struct tree *construct(
struct tree *root,
struct tree *r,
struct tree *Data)
{
if(!r)
{
r = (struct tree *)malloc(sizeof(struct tree));
if(!r)
{
printf(" !");
exit(0);
}
r->left = NULL;
r->right = NULL;
strcpy(r->name,Data->name);
strcpy(r->city,Data->city);
strcpy(r->sex,Data->sex);
strcpy(r->age,Data->age);
strcpy(r->job,Data->job);
if(!root)
return r;
if(strcmp(Data->name,root->name)<0)
root->left = r;
else
root->right = r;
return r;
}
if(strcmp(Data->name,r->name)<0)
construct(r,r->left,Data);
else
construct(r,r->right,Data);
return root;
}
struct tree *Search(root,name)
struct tree *root;
char name[];
{
struct tree *p;
if(root == NULL)
printf("
");
p = root;
while(strcmp(p->name,name)!=0)
{
if(strcmp(p->name,name)>0)
p = p->left;
else
p = p->right;
if(p == NULL)
break;
}
return(p);
}
void print(struct tree *r)
{
if(!r)
return;
print(r->left);
printf("%s
",r->name);
print(r->right);
}
void print_currentData(struct tree *point)
{
if(point == NULL)
return;
printf(" :%s
",point->name);
printf(" :%s
",point->city);
printf(" :%s
",point->sex);
printf(" :%s
",point->age);
printf(" :%s
",point->job);
}
int main(void)
{
int i;
char c[10];
char swap[20];
char name[20];
struct tree *root,*p;
struct tree *temp;
p = NULL;
temp = NULL;
root = NULL;
for(i = 0;iname,swap);
printf(" :
");
scanf("%s",swap);
strcpy(temp->city,swap);
printf(" [Male/Female]:
");
scanf("%s",swap);
strcpy(temp->sex,swap);
printf(" :
");
scanf("%s",swap);
strcpy(temp->age,swap);
printf(" :
");
scanf("%s",swap);
strcpy(temp->job,swap);
temp->left = NULL;
temp->right = NULL;
root =construct(root,root,temp);
print_currentData(temp);
printf(" :
");
root = root;
print(root);
}
else
return 0;
}
print_currentData(p);
return 1;
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다. 본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.