![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Rzevsky |
![]()
Сообщение
#1
|
Гость ![]() |
Задача звучит так: используя представление дерева, с помощью связных списков написать программу для добавления и удаления листьев дерева.
Пожалуйста помогите, если не трудно. |
Amro |
![]() ![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Мда деревья это муть полная......я сам трудно врубаюсь......
вот раскопал кое-что, это реализация дерева(т.е как раз добавление элементов) и его вывод, в узлах дерева нах-ся символы, которые добавляются в дерево при помощи сравнения их ASCII кодов
{ вывод на экран вершин дерева /слева направо/ }
program DisplayTree;
uses Crt;
type
TreePointer = ^tree;
tree = record
data: char;
left: TreePointer;
right: TreePointer;
end;
var
root, dummy: TreePointer;
ch:char;
function STree(root, r:TreePointer; data: char):TreePointer;
begin
if r = nil then
begin
new(r); { получить новую вершину }
r^.left := nil;
r^.right := nil;
r^.data := data;
if data < root^.data then root^.left := r
else root^.right := r;
STree := r;
end else
begin
if data<r^.data then STree := STree(r, r^.left, data)
else STree := STree(r, r^.right, data)
end;
end; { конец процедуры STree }
procedure PrintTree(r: TreePointer; n: integer);
var
i:integer;
begin
if r<>nil then begin
PrintTree(r^.left, n+1);
for i := 1 to n do Write(' ');
Writeln(r^.data);
PrintTree(r^.right, n+1);
end;
end; { конец процедуры PrintTree }
begin
root := nil;
repeat
Write('enter a letter (Q to quit): ');
ch := ReadKey; Writeln(ch);
if root= nil then root := STree(root, root, ch)
else dummy := STree(root, root, ch);
ch := UpCase(ch);
until ch ='Q';
PrintTree(root, 0);
end.
Rzevsky ИТ 21 Штурмует форум :D АГУ ФоревА :P -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Amro |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот тебе удаление нашёл........это всё из книг, которые выложены на pascal.dax.ru Поскачивай можь чёто полезное и найдешь, для себя.......
Код { удаление элемента из дерева } function DTree(root:TreePointer;key:char):TreePointer; var temp,temp2:TreePointer; begin if root^.data = key then begin if root^.left=root^.right tnen begin dispose(root) DTree := nil; end else if root^.left=nil tnen begin temp := root^.right dispose(root) DTree := temp; end else if root^.right=nil tnen begin temp := root^.left dispose(root) DTree := temp; end else begin { имеются два листа } temp2 := root^.right temp := root^.right while temp^.left <> nil do temp := temp^.left; temp^.left := root^.left dispose(root); DTree := temp2 end; else begin if root^.data < key then root^.right := DTree(root^.right, key) else root^.left := DTree(root^.left, key) DTree := root; end; end; { конец функции DTree } С другой стороны Rzevsky нашему господину Б по-моему всё равно, ему лишь бы прога была.....он её даже смотреть мне кажется не будет....................и лабу тебе зачтёт, главное ему её объяснить!!! Rzevsky а ты лодырь, у тебя ж с паскалем всё хорошо, почему бы самому пару дней не посидеть??? А работа же, тогда понятно!!!! ОСТОРОЖНЕЕ! не грубить! moderator Сообщение отредактировано: Oleg_Z - 12.10.2004 8:25 -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Прошу прощения у посетителей форума, в старом факе была эта тема, я его удалил, а в новый еще не занес...
в присоед. файле модуль для работы с деревьями. Там все операции. Rzevsky, скоро я все выложу. Готовлю сейчас FAQ. Прикрепленные файлы ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Rzevsky |
![]()
Сообщение
#5
|
Гость ![]() |
Большое спасибо, Amro
![]() |
BlackShadow |
![]()
Сообщение
#6
|
Гость ![]() |
Есть ещё такая тема: Composite Template называется. Слышал кто? Мне понравилось...
|
Atos |
![]()
Сообщение
#7
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Это что-то, связанное с шаблонами?
|
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 12:17 |