Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические структуры данных
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.