Страница 1 из 1

Queue

Добавлено: 26 янв 2008, 19:38
Z1ppeR
Всем привет, помогите пожалуйста с такой задачей: нужно реализовать очередь. Вот некоторый код, который я не могу собрать воедино, в консольное приложени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++]; }
  };

Re: Queue

Добавлено: 28 янв 2008, 11:07
Хыиуду
Оффтоп: в жизни не слышал, чтобы такой класс данных, как ОЧЕРЕДЬ, допускал СОРТИРОВКУ! Попробуйте придти, скажем, в поликлинику и попробовать отсортировать очередь бабушек, скажем, по росту - вам там такой Exception поднимут, что лучше и не пробовать.

Re: Queue

Добавлено: 28 янв 2008, 11:37
WinMain
Если конечно потребуется, то отсортировать можно что угодно и кого угодно. Только вот алгоритм сортировки тоже надо самому писать или можно готовыми воспользоваться из стандартной библиотеки?

Re: Queue

Добавлено: 29 янв 2008, 02:24
WinMain
Можешь воспользоваться моей реализацией шаблона очереди, который я делал года 2 тому назад. В качестве примера очередь представляет собой динамический байтовый массив CMemBlockContainer<BYTE>, который последовательно заполняется данными из бинарного файла. Потом эти данные последовательно извлекаются из очереди и записываются уже в другой бинарный файл. У меня там не реализована сортировка, но это уже на твоей совести. Рекомендую сортировку сделать так: динамически выделяешь память под временный массив, в который сливаешь все данные из очереди; потом этот массив сортируешь; а уже отсортированный массив снова загоняешь в очередь. Временный массив после этого удаляешь.