제8 차 탑승 작업: 도서 관리 시스템

#include
#include
#define ENDKEY '#'

typedef struct node
{
	char name[20];
	char writer[20];
	float price;
	struct node *lchild,*rchild; 
}BSTNode,*BSTree;

//        
void InsertBST(BSTree *bst,char* name,char* writer,float price)
{
	BSTree s;
	if(*bst==NULL)//    
	{
		s=(BSTree)malloc(sizeof(BSTNode));
		strcpy(s->name,name);
		strcpy(s->writer,writer);
		s->price=price;
		s->lchild=NULL;
		s->rchild=NULL;
		*bst=s; 
	}
	else if(strcmp((*bst)->name,name)>0)
	 InsertBST(&((*bst)->lchild),name,writer,price);
	else if(strcmp((*bst)->name,name)<0)
	 InsertBST(&((*bst)->rchild),name,writer,price);
}
//       
void CreateBST(BSTree *bst)
{
	char name[20];
	char writer[20];
	float price;
	*bst=NULL;
	printf("       (        ):
"); scanf("%s %s %f",name,writer,&price); fflush(stdin); while(strcmp(name,"#")!=0) { fflush(stdin); InsertBST(bst,name,writer,price); printf(" ( ):
"); scanf("%s %s %f",name,writer,&price); } } // void InOrder(BSTree bst) { if(bst!=NULL) { InOrder(bst->lchild); printf("%s %s %f
",bst->name,bst->writer,bst->price); InOrder(bst->rchild); } } // BSTree SearchBST(BSTree bst,char* name) { if(!bst) return NULL; else if(strcmp(bst->name,name)==0) { printf(" :
"); printf("%s %s %f",bst->name,bst->writer,bst->price); return bst;// } else if(strcmp(bst->name,name)>0) return SearchBST(bst->lchild,name); else return SearchBST(bst->rchild,name); } BSTree SearchBST_1(BSTree bst,char* writer) { if(!bst) return NULL; else if(strcmp(bst->writer,writer)==0) { printf(" :
"); printf("%s %s %f",bst->name,bst->writer,bst->price); //return bst;// } else if(strcmp(bst->writer,writer)>0) return SearchBST_1(bst->lchild,writer); else return SearchBST_1(bst->rchild,writer); } BSTree SearchBST_2(BSTree bst,char* name,char* writer) { if(!bst) return NULL; else if(strcmp(bst->name,name)==0&&strcmp(bst->writer,writer)==0) { printf(" :
"); printf("%s %s %f",bst->name,bst->writer,bst->price); return bst; } else if(strcmp(bst->name,name)>0) return SearchBST_2(bst->lchild,name,writer); else return SearchBST_2(bst->rchild,name,writer); } void main() { char choice; char name[20]; char writer[20]; BSTree bst; CreateBST(&bst); InOrder(bst); printf("///////////////////// //////////////////////
"); printf(" :
"); printf("A.
"); printf("B.
"); printf("C. +
"); printf("///////////////////// ////////////////////////////////////////
"); fflush(stdin); scanf("%c",&choice); switch(choice) { case 'A':printf(" :
");scanf("%s",name);SearchBST(bst,name);break; case 'B':printf(" :
");scanf("%s",writer);SearchBST_1(bst,writer);break; case 'C':printf(" , :
");scanf("%s %s",name,writer);SearchBST_2(bst,name,writer);break; } }

좋은 웹페이지 즐겨찾기