728x90
반응형
class INFO
{
private:
int iPut;
public:
string strMou;
int iHeight;
INFO* clp;
public:
int Menu(void);
INFO* Append(INFO* tInfo);
void Display(INFO* tInfo);
INFO* Insert(INFO* tInfo);
INFO* Delete(INFO* tInfo);
void Search(INFO* tInfo);
public:
INFO();
};
INFO::INFO()
{
iPut=0;
}
void main(void)
{
INFO* tHead;
INFO* tTail;
memset(&tHead,0,sizeof(INFO));
memset(&tTail,0,sizeof(INFO));
tHead=new INFO;
tTail=tHead;
tHead->clp=NULL;
while(true)
{
system("cls");
switch(tHead->Menu())
{
case 1:
tTail=tTail->Append(tTail); // 추가하기
break;
case 2:
tHead->Display(tHead); // 출력하기
system("pause");
break;
case 3:
tHead=tHead->Insert(tHead); // 삽입하기
break;
case 4:
tHead=tHead->Delete(tHead); // 삭제하기
break;
case 5:
tHead->Search(tHead); // 검색하기
system("pause");
break;
default:
cout <<"잘못입력하였습니다" <<endl; // 예외처리
system("pause");
continue;
}
}
}
int INFO::Menu(void)
{
cout <<"========== MENU ==========" << endl;
cout <<"1.Append (추가)" << endl;
cout <<"2.Display(출력)" << endl;
cout <<"3.Insert(삽입)" << endl;
cout <<"4.Delete(삭제)" << endl;
cout <<"5.Search(찾기)" <<endl;
cout <<"6.Quit(종료)"<<endl;
cout <<"========== END ==========" << endl;
cout <<"\n◇ Choice(선택) : ";
cin >>iPut;
return iPut;
}
INFO* INFO::Append(INFO* tInfo)
{
cout <<"========== Mountain==========" << endl;
cout <<"산 이름을 입력하세요 : ";
cin>>tInfo->strMou;
cout <<"\n해발높이를 입력하세요 : ";
cin >> tInfo->iHeight;
tInfo->clp=new INFO;
tInfo=tInfo->clp;
tInfo->clp=NULL;
return tInfo;
}
void INFO::Display(INFO* tInfo)
{
iPut=0;
cout<<"****************"<<endl;
cout<<"no\t산이름\t해발"<<endl;
cout<<"****************"<<endl;
while(tInfo->clp!=NULL)
{
cout<<++iPut<<"\t"<<tInfo->strMou<<"\t"<<tInfo->iHeight<<endl;
tInfo=tInfo->clp;
}
}
INFO* INFO::Insert(INFO* tInfo)
{
INFO* tItem;
INFO* tStart=tInfo;
tItem=new INFO;
Display(tInfo);
cout<<"삽입할 위치 : ";
cin>>iPut;
cout<<"\n산이름을 입력 : ";
cin>>tItem->strMou;
cout<<"\n해발높이 입력 : ";
cin>>tItem->iHeight;
if(iPut==1)
{
tItem->clp=tInfo;
tStart=tItem;
}
else
{
for(int i=1;i<iPut-1;++i)
{
tInfo=tInfo->clp;
}
tItem->clp=tInfo->clp;
tInfo->clp=tItem;
}
return tStart;
}
INFO* INFO::Delete(INFO* tInfo)
{
INFO* tStart=tInfo;
Display(tInfo);
cout <<"삭제할 번호는 : ";
cin >>iPut;
if(iPut==1)
{
tStart=tInfo->clp;
delete tStart;
}
else
{
INFO* tTmp;
for(int i=1; i<iPut-1;++i)
{
tInfo=tInfo->clp;
}
tTmp=tInfo->clp;
tInfo->clp=tInfo->clp->clp;
delete tTmp;
}
return tStart;
}
void INFO::Search(INFO* tInfo)
{
char strMou[20];
cout<<"찾으실 산의 이름은:";
cin>>strMou;
while(tInfo->clp!=NULL)
{
if(tInfo->strMou.compare(strMou) == 0)
{
cout<<" 산이름: "<<tInfo->strMou<<" 해발: "<<tInfo->iHeight<<endl;
iPut=1;
}
tInfo=tInfo->clp;
}
if(iPut==0)
{
cout<<"찾을수 없습니다"<<endl;
}
} 728x90
반응형
'back-end > C & API' 카테고리의 다른 글
| 자료구조 STL MAP (0) | 2023.07.21 |
|---|---|
| 스택 예제 (0) | 2023.07.21 |
| 디자인패턴의 정의와 역사, 종류 / 상태 패턴 정의 (0) | 2023.07.20 |
| 디자인 패턴의 종류 (0) | 2023.07.20 |
| 싱글톤 define 에 선언해서 편하게쓰기 (0) | 2023.07.20 |