Queue

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Аватара пользователя
Z1ppeR
Сообщения: 4
Зарегистрирован: 04 янв 2008, 13:33

Всем привет, помогите пожалуйста с такой задачей: нужно реализовать очередь. Вот некоторый код, который я не могу собрать воедино, в консольное приложениe... надо чтобы в очередь можно было добавлять, отнимать и сортировать все элементы:

Код: Выделить всё

template <class Item>
class QUEUE
  {
    private:
      // Implementation-dependent code
    public:
      QUEUE(int);
      int empty();
      void put(Item);
      Item get();
  };
-----
template <class Item>
class QUEUE 
  {
    private:
      struct node 
        { Item item; node* next; 
          node(Item x) 
            { item = x; next = 0; } 
        };
      typedef node *link;
      link head, tail;
    public:
      QUEUE(int)
        { head = 0; }
      int empty() const
        { return head == 0; }
      void put(Item x)
        { link t = tail; 
          tail = new node(x);
          if (head == 0) 
               head = tail;
          else t->next = tail;
        }
      Item get()
        { Item v = head->item; link t = head->next;
          delete head; head = t; return v; }
  };
-----
template <class Item>
class QUEUE
  {
    private:
      Item *q; int N, head, tail;
    public:
      QUEUE(int maxN)
        { q = new Item[maxN+1]; 
          N = maxN+1; head = N; tail = 0; }
      int empty() const
        { return head % N == tail; }
      void put(Item item)
        { q[tail++] = item; tail = tail % N; }
      Item get()
        { head = head % N; return q[head++]; }
  };
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Оффтоп: в жизни не слышал, чтобы такой класс данных, как ОЧЕРЕДЬ, допускал СОРТИРОВКУ! Попробуйте придти, скажем, в поликлинику и попробовать отсортировать очередь бабушек, скажем, по росту - вам там такой Exception поднимут, что лучше и не пробовать.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Если конечно потребуется, то отсортировать можно что угодно и кого угодно. Только вот алгоритм сортировки тоже надо самому писать или можно готовыми воспользоваться из стандартной библиотеки?
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Можешь воспользоваться моей реализацией шаблона очереди, который я делал года 2 тому назад. В качестве примера очередь представляет собой динамический байтовый массив CMemBlockContainer<BYTE>, который последовательно заполняется данными из бинарного файла. Потом эти данные последовательно извлекаются из очереди и записываются уже в другой бинарный файл. У меня там не реализована сортировка, но это уже на твоей совести. Рекомендую сортировку сделать так: динамически выделяешь память под временный массив, в который сливаешь все данные из очереди; потом этот массив сортируешь; а уже отсортированный массив снова загоняешь в очередь. Временный массив после этого удаляешь.
Вложения
FileToBuff.zip
(90.95 КБ) 12 скачиваний
Ответить