이진탐색트리 report
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 구현환경

2. 프로그램 특징 및 설명

3. 참고 문헌

4. 소스코드

본문내용

->name)<0)
s->left=u;
else
s->right=u;
else
*r = u;
fclose(fp);
}
void delname(node** r, char* n, char* e){
//int compresult1, compresult2;
FILE* fp;
node *s, *t, *u, *v, *q;
s=NULL;
q=*r;
fp = fopen("input_data.txt","a");
while(q!=NULL && strcmp(n,q->name)!=0 && strcmp(e,q->add)!=0){
s=q;
if(strcmp(n,q->name)<0)
q=q->left;
else
q=q->right;
}
if(q==NULL){
printf("값을 찾을 수 없습니다.\n");
return;
}
fprintf(fp,"DELETE %s %s\t\n",n,e);
if(q->left==NULL && q->right==NULL){
if(s!=NULL){
if(s->left==q)
s->left=NULL;
else
s->right=NULL;
}
else *r=NULL;
}
else if(q->left==NULL || q->right==NULL){
u=(q->left!=NULL)?q->left:q->right;
if(s!=NULL){
if(s->left==q)
s->left=u;
else
s->right=u;
}
else *r=u;
}
else{
t=q;
v=q->right;
while(t->left!=NULL){
t=v;
v=v->left;
}
if(t->left==v)
t->left=v->right;
else
t->right=v->right;
q->name=v->name;
q->tel=v->tel;
q->add=v->add;
q=v;
}
free(q);
fclose(fp);
}
void deltel(node **r, char* t){
FILE *fp;
node *s, *a, *u, *v, *q;
s=NULL;
q=*r;
fp = fopen("input_data.txt","a");
while(q!=NULL && strcmp(t,q->tel)!=0){
s=q;
if(strcmp(t,q->tel)<0)
q=q->left;
else
q=q->right;
}
if(q==NULL){
printf("값을 찾을 수 없습니다.\n");
return;
}
fprintf(fp, "DELETE %s\t\n",t);
if(q->left==NULL && q->right==NULL){
if(s!=NULL){
if(s->left==q)
s->left=NULL;
else
s->right=NULL;
}
else *r=NULL;
}
else if(q->left==NULL || q->right==NULL){
u=(q->left!=NULL)?q->left:q->right;
if(s!=NULL){
if(s->left==q)
s->left=u;
else
s->right=u;
}
else *r=u;
}
else{
a=q;
v=q->right;
while(v->left!=NULL){
a=v;
v=v->left;
}
if(a->left==v)
a->left=v->right;
else
a->right=v->right;
q->name=v->name;
q->tel=v->tel;
q->add=v->add;
q=v;
}
free(q);
fclose(fp);
}
void findname(node** r, char* n, char* e){
node* s;
s=*r;
while(s!=NULL && strcmp(n,s->name)!=0 && strcmp(e,s->add)!=0){
if(strcmp(n,s->name)<0)
s=s->left;
else
s=s->right;
}
if(s==NULL){
printf("값을 찾을 수 없습니다.\n");
return;
}
update(s);
}
void findtel(node** r, char* t){
node* s;
s=*r;
while(s!=NULL && strcmp(t,s->tel)!=0){
if(strcmp(t,s->tel)<0)
s=s->left;
else
s=s->right;
}
if(s==NULL){
printf("값을 찾을 수 없습니다.\n");
return;
}
update(s);
}
void update(node *s){
int i,k,j=1;
char n[20];
char t[14];
char eid[15];
char edo[15];
char email[30];
char d[2]= {'@'};
printf("\n");
printf("\tNAME:");
scanf("%s",n);
while(1){
printf("\tTELEPHON(***-****-**** 형태로):");
scanf("%s",t);
if(t[3] == '-' && t[8] == '-')
break;
else{
printf("입력이 잘못되었습니다.\n");
}
}
while(j){
printf("\tE-mail ID:");
scanf("%s",eid);
if(!strchr(eid,'@') && !strchr(eid,'.'))
break;
else
printf("입력이 잘 못 되었습니다. 재입력하세요\n");
}
while(j){
printf("\n\tE-mail domain:");
scanf("%s", edo);
i=strlen(edo);
for(k=0;k if(edo[k]=='.'){
j=0;
break;
}
}
if(j==1)
printf("입력이 잘 못 되었습니다. 재입력하세요\n");
}
strcpy(email,eid);
strcat(email,d);
strcat(email,edo);
strcpy(s->name, n);
strcpy(s->tel,t);
strcpy(s->add,email);
printf("\n");
}
void print(node *r){
if(r){
print(r->left);
printf("\n ");
printf("\t%s\t",r->name);
printf("\t%s\t",r->tel);
printf("\t%s",r->add);
print(r->right);
}
}
  • 가격3,300
  • 페이지수13페이지
  • 등록일2012.04.18
  • 저작시기2010.6
  • 파일형식한글(hwp)
  • 자료번호#740971
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니