동물 수용소

2656 단어
동물 수용소.개 와 고양이 만 수용 할 수 있 는 동물 수용소 가 있 고 '선진 선출' 원칙 을 엄 격 히 지 키 고 있다.이 수용소 의 동물 을 입양 할 때 입양 인 은 모든 동물 중 '가장 늙 은' (수용소 에 들 어 가 는 시간 이 길 고 짧 은 것 으로 정 해진) 동물 만 입양 하거나 고양이 나 개 (동시에 이런 동물 중 '가장 늙 은' 것 을 입양 해 야 하 는 것) 를 고 를 수 있다.입양 인 이 입양 하고 싶 은 상 대 를 자 유 롭 게 고 를 수 없다 는 얘 기다.이 시스템 에 적용 되 는 데이터 구 조 를 만 들 고 enqueue, dequeueAny, dequeueDog, dequeueCat 등 여러 가지 조작 방법 을 실현 하 십시오.자바 에 내 장 된 링크 목록 데이터 구 조 를 사용 할 수 있 습 니 다.
enqueue 방법 은 animal 파라미터 가 있 는데 animal [0] 은 동물 번 호 를 대표 하고 animal [1] 은 동물 의 종 류 를 대표 하 며 그 중에서 0 은 고양 이 를 대표 하고 1 은 개 를 대표 한다.
dequeue * 방법 은 목록 [동물 번호, 동물 종류] 를 되 돌려 줍 니 다. 입양 할 수 있 는 동물 이 없 으 면 [- 1, - 1] 을 되 돌려 줍 니 다.
class AnimalShelf {
public:  
        queue> cat;
        queue> dog;
        queue anyc; 
        queue anyd;
        int count = 0;
    AnimalShelf() {
      
    }
    
    void enqueue(vector animal) {
        if(animal[1] == 0)
        {
            cat.push( make_pair(animal[0],animal[1]));
            count++;
            anyc.push(count);
        }
        else
        {
            dog.push( make_pair(animal[0],animal[1]));
            count++;
            anyd.push(count);
        }
    }
    
    vector dequeueAny() {
      if(!dog.empty() && cat.empty())
      {
          return dequeueDog();
      }
      else if(!cat.empty() && dog.empty())
      {
          return dequeueCat();
          
      }
      else if(!cat.empty() && !dog.empty())
      {
          if(anyd.front() < anyc.front())
          {
              return dequeueDog();
              
          }
          else if(anyd.front() > anyc.front())
          {
              return dequeueCat();
          }
      }
      return {-1,-1};
          
    }
    
    vector dequeueDog() {
        if(!dog.empty())
        {
            pair tmp = dog.front();
            dog.pop();
            anyd.pop();
            return {tmp.first,tmp.second};
        }
        return {-1,-1};
    }
    
    vector dequeueCat() {
        if(!cat.empty())
        {
            pair tmp = cat.front();
            cat.pop();
            anyc.pop();
            return {tmp.first,tmp.second};
        }
         return {-1,-1};
    }
};

/**
 * Your AnimalShelf object will be instantiated and called as such:
 * AnimalShelf* obj = new AnimalShelf();
 * obj->enqueue(animal);
 * vector param_2 = obj->dequeueAny();
 * vector param_3 = obj->dequeueDog();
 * vector param_4 = obj->dequeueCat();
 */

좋은 웹페이지 즐겨찾기