Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические структуры данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ilius
Даны две непустые очереди; адреса начала и конца первой равны P1 и P2, а второй - P3 и P4. Элементы каждой из очередей упорядочены по возрастанию (в направлении от начала очереди к концу). Объеденить очереди в одну с сохранением упорядочености элементов. Вывести указатели P5 и P6 на начало и конец полученной очереди. Операции выделения и освобождения памяти не использовать, поля data не изменять.
мисс_граффити
ищи по форуму сортировку слиянием....
Ilius
я уже искал и не нашел
Ilius
Может кто-нибуть поможет а то уже скоро сдавать надо, а я ничего не понимаю в этой задаче wacko.gif
мисс_граффити
Сами очереди (которые даны) реализуй для начала.
Покажи код.
Ilius
Я вообще без понятия как ее делать(просто пропустил эту тему) может решит кто-нибудь?
Гость
Ну пожалуста кто хорошо в динамике шарит помогите!
Ilius
Да спасибо это канешно хорошо но разве очереди и списки одно и тоже
klem4
Виноват, конечно нет ... Хотя структуры то эти похожи и реализация мне кажется не сильно отличаться будет ... сам не пробовал сделать ?
мисс_граффити
я бы сказала, подход должен быть таким:
очередь - это список, для которого определены операции добавления в конец и убирания из начала.
смотрим первые элементы первой и второй очередей. берем меньший, добавляем его в третью очередь (пока пустую), удаляя из его старой. опять смотрим первые элементы... пока одна из очередей не кончится
volvo
Вот тебе сортировка очереди:
FAQ -> Все о динамических структурах данных.

Как реализовать не ООП очередь - см. FAQ -> Динамические структуры данных
Ilius
Проверте пожалуста правильно ли решено:
 program ochered_n15;
type    och=^elem;
        elem=record
        data:char;
        next:och
        end;
var p1,p2,p3,p4,p5,p6:och;
    im,i1,i2:char;
    j,k:integer;
procedure v(b,e:och;i:char);
      var x:och;
      begin x^.data:=i;
            x^.next:=nil;
            if b=nil then b:=x
                     else e^.next:=x;
            e:=x
      end;
procedure iz(b,e:och;i:char);
      var x:och;
      begin if b<>nil then
            begin i:=b^.data;
                  x:=b;
                  b:=b^.next;
                  dispose(x)
            end;
      end;
begin j:=-1; k:=0;
      repeat writeln('введите элемент первой очереди, окончание ввода - "?"');
             readln(i1);
             v(p1,p2,i1);
             j:=j+1;
      until i1='?';
      iz(p1,p2,i1);
      repeat writeln('введите элемент второй очереди, окончание ввода - количество элементов очередей равно');
             readln(i2);
             v(p3,p4,i2);
             k:=k+1;
      until j=k;
      repeat

             iz(p1,p2,im);
             v(p5,p6,im);
              writeln(im);
             iz(p3,p4,im);
             v(p5,p6,im);
              writeln(im);
             k:=k+1;
      until p1=nil;
end.
 
Ilius
Тут что то с сортировкой не то может поможите упорядочить по возрастанию плз. mega_chok.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.