Помощь - Поиск - Пользователи - Календарь
Полная версия: Списки и двоичное дерево
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SeRGuSii
1. Дан двунаправленный список целых чисел, получить однонаправленный список, содержащий все элементы исходного, порядковые номера которых являются простыми числами, а значения не являются простыми.
2. Дано два однонаправленных списка целых чисел, удалить во втором списке все элементы, которые больше среднего арифметического положительных элементов первого списка и продублировать все элементы второго списка, меньше среднего арифметического четных элементов первого списка.
3. Дано двоичное дерево. Найти сумму элементов дерева больших значения разности max-min

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

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

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

Кстати, а про списки и деревья ты читал?
FAQ: Деревья
SeRGuSii
klem4, да ненужно полностью программу писать, просто функцию или процедуру опишите по конкретной задаче, все остальное элементарно делается.
volvo, насчет деревьев имею представление, правда небольшое, неудалось еще написать нормально работающию программу под них sad.gif, путаюсь я в них sad.gif
volvo
Цитата(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 можно взять здесь: FAQ: Замечательные числа
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.