C 언어 구현 트 리 의 동적 검색 인 스 턴 스 코드

4500 단어
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; }

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다. 본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기