Страница: 1 | 2 | 3 | 4 | 5 | 6 |
Вопрос: Дв. списки(Дерево)
Добавлено: 31.05.08 09:34
Автор вопроса: true
Долго искал по форуму и интернету, но толком ничего не нашел. Поэтому решил написать здесь в надежде получить помощь. Суть задачи состоит в том, чтобы вывести двусвзный список в виде дерева, желательно в msgbox. Все это реализуется в Excel. Я написал процедуру добавления элементов к дереву, а вывести не могу. Дерево изначально упорядоченное. Помогите написать вывод дерева в msgbox.
Описание дерева и ссылок в Class Module (List2)
Option Explicit
Public value As Integer
Public right As list2
Public left As list2
Public count As Integer
Ну и само добавление в Module. Значения берутся из первого столбца.
Sub main()
Dim l2 As list2
n = 0
Call ReadTree(l2)
End Sub
Sub ReadTree(l2 As list2)
Dim i, new_value As Integer
i = 1
Do While Excel.Cells(i, 1) <> ""
new_value = CInt(Excel.Cells(i, 1))
Call AddTree(l2, new_value)
i = i + 1
Loop
End Sub
Sub AddTree(l2 As list2, new_value As Integer)
Dim p As list2
Dim new_list As New list2
Dim search As Boolean
Set p = l2
new_list.value = new_value
new_list.count = 1
search = True
Do While search
If l2 Is Nothing Then
search = False
Set l2 = new_list
n=n+1
ElseIf new_value < p.value Then
If p.left Is Nothing Then
Set p.left = new_list
search = False
n=n+1
Else
Set p = p.left
End If
ElseIf new_value > p.value Then
If p.right Is Nothing Then
Set p.right = new_list
search = False
n=n+1
Else
Set p = p.right
End If
ElseIf new_value = p.value Then
p.count = p.count + 1
n=n+1
search = False
End If
Loop
End Sub
Ответы
Всего ответов: 77
Номер ответа: 1
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #1
Добавлено: 04.06.08 12:28
Мда, изжили себя гении...Чтож, придется самому думать.
Номер ответа: 2
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #2
Добавлено: 04.06.08 12:57
Гений дремлет
Пройди рекурсией по дереву накапливая строку.
Каждое вход в процедуру увеличивает отступа перед именем элемента ветки, каждый выход сокращает.
Каждый элемент на новой строке.
Номер ответа: 3
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #3
Добавлено: 04.06.08 13:02
Опечаток налепил как первоклашка, аж две на строку.
Блин пора просыпаться, обед уходит безвозвратно
Сори за оффтоп.
Номер ответа: 4
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #4
Добавлено: 04.06.08 13:13
Саму логику то я понимаю, просто с рекурсией плохо у меня. Я матрицей делал и у меня получилось дерево какое нужно было, только вот преподу не понравилось, сказал переделать. И вот я уже почти месяц сижу и думаю, как бы сделать.
Номер ответа: 5
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #5
Добавлено: 04.06.08 19:39
Напишите хотя бы примерно эту рекурсию, а я как нить переделаю для себя, а то я на счет пробелов не понимаю и как построчно разбить можно.
Номер ответа: 6
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #6
Добавлено: 04.06.08 20:14
Шли свой документ на maxpotas@mail.ru
Посмотрю, может что пойму, а может и сделаю что-нибудь.
Рекурсия это не формула, чтоб её рас так и написать.
Ну, напишу я рекурсивный перебор коллекции папок в FSO, как ты его потом переделывать будешь, ничего не понимая?
Номер ответа: 7
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #7
Добавлено: 05.06.08 05:24
Все, я отправил.
Номер ответа: 8
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #8
Добавлено: 06.06.08 20:50
Проверка связи.
Гений проснулся и написал рекурсию.
С созданием строки тоже разберемся.
Номер ответа: 9
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #9
Добавлено: 06.06.08 22:23
Связь отменна! Эт хорошо что гении не дремлют!
Номер ответа: 10
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #10
Добавлено: 06.06.08 22:30
Почту смотрел?
Номер ответа: 11
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #11
Добавлено: 06.06.08 22:33
Ага! Буду ждать! ну и сам че подумаю, может что в голову придет интересное! Почему, книжка вроде нормальная, только не для двусвязных списков, вот односвязные там разжеваны, что даже ребенок поймет, по ней я и реализовал первую задачу из общих на односвязные списки.
Номер ответа: 12
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #12
Добавлено: 06.06.08 22:46
Слушай тебе обязательно эти списки нужны?
Номер ответа: 13
Автор ответа:
Smith
ICQ: ненавижу
Вопросов: 28
Ответов: 317
Web-сайт:
Профиль | | #13
Добавлено: 06.06.08 22:48
Я такое забубенное дерево замутил, что по сравнению с ним никакие списки вообще не котируют
Номер ответа: 14
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #14
Добавлено: 06.06.08 22:50
Ну вообще это и есть суть задания. Создать упорядоченное дерево, подсчитать кол-во вхождений определенного элемента, вывести по возростанию, ну и самое главное это вывести его по вершинам, то есть само дерево как оно есть! а что, не получается что то?
Номер ответа: 15
Автор ответа:
true
Вопросов: 1
Ответов: 38
Профиль | | #15
Добавлено: 06.06.08 22:52
Создание упорядоченного дерева, я привел в самом первом посте. Интересно было бы посмотреть на них!