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

+ Recent posts