Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Списки и двоичное дерево

Автор: SeRGuSii 22.05.2005 19:31

1. Дан двунаправленный список целых чисел, получить однонаправленный список, содержащий все элементы исходного, порядковые номера которых являются простыми числами, а значения не являются простыми.
2. Дано два однонаправленных списка целых чисел, удалить во втором списке все элементы, которые больше среднего арифметического положительных элементов первого списка и продублировать все элементы второго списка, меньше среднего арифметического четных элементов первого списка.
3. Дано двоичное дерево. Найти сумму элементов дерева больших значения разности max-min

p.s. Ребята помогите, а то уже от этих задач пухнит голова, а зачет уже не загорами sad.gif, исходники можно сделать и без описательной части в виде подпрограмм.

Автор: klem4 22.05.2005 19:34

для начала попробуй вот это : http://forum.pascal.net.ru/index.php?showtopic=2706&view=findpost&p=23570

+ пользуйся поиском, на списки много задач решено, врядли кто-то будет делать такую задачу за тебя полностью с нуля.

Автор: volvo 22.05.2005 19:36

Цитата(SeRGuSii @ 22.05.05 15:31)
3. Дано двоичное дерево. Найти сумму элементов дерева больших значения разности max-min

Подсказка - в двоичном дереве max - "крайнее правое" значение, min - "крайнее левое". Находишь max - min и проходом по дереву (рекурсия) суммируешь значения, удовлетворяющие условию...

Кстати, а про списки и деревья ты читал?
http://forum.pascal.net.ru/index.php?showtopic=2706&view=findpost&p=28334

Автор: SeRGuSii 22.05.2005 21:49

klem4, да ненужно полностью программу писать, просто функцию или процедуру опишите по конкретной задаче, все остальное элементарно делается.
volvo, насчет деревьев имею представление, правда небольшое, неудалось еще написать нормально работающию программу под них sad.gif, путаюсь я в них sad.gif

Автор: volvo 22.05.2005 22:11

Цитата(SeRGuSii @ 22.05.05 15:31)
1. Дан двунаправленный список целых чисел, получить однонаправленный список, содержащий все элементы исходного, порядковые номера которых являются простыми числами, а значения не являются простыми.


Type
ref=^node;
node=record
next:ref;
data:integer;
end;

tlist = record
first, last: ref;
end;

... { описание doubleref }
tdoublelist = record
first, last: doubleref;
end;

procedure append(var list: tlist; T: integer);
var pt: ref;
begin
new(pt);
pt^.data := T;
pt^.next := nil;

if list.first = nil then list.first := pt
else list.last^.next := pt;

list.last := pt;
end;

procedure num_1(one: tdoublelist; var two: tlist);
var p: doubleref;
begin
two.first := nil; two.last := nil;
p := one.first; count := 1;
while p <> nil do begin
if isPrime(count) and not isPrime(p^.data) then
append(two, p^.data);
inc(count); p := p^.next;
end;
end;

Реализацию isPrime можно взять здесь: http://forum.pascal.net.ru/index.php?showtopic=3916&view=findpost&p=32236