Связный список

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Связный список

Сообщение Alprog » 07.02.2009 (Сб) 17:21

Мне нужен механизм, который бы позволял добавлять/удалять в список UDT, а также менять в нём позицию.

Я сделал сначала связный список: создал классы, которые имеют ссылку на следующий объект; и модуль
для удаления/добавления объектов, в который экземпляры передаются, как Object. Этот вариант не устроил,
так как получилось нагромождение классов (у меня связный список связных списков).
А хочется запихать всю конструкцию в один класс (иначе работа с указателями сильно осложняется).

Попробовал сделать динамические массивы (скорость изменения позиции мне не критична). Но функции
добавления, удаления и перемещения придётся писать для каждого типа массивов, что не есть хорошо.

Тогда решил прибегнуть к Collection. Но добавить UDT (даже публичный) в коллекцию мне так и не удалось.

Как быть?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Связный список

Сообщение alibek » 07.02.2009 (Сб) 21:08

Если вместо UDT использовать обычные классы с нужными свойствами, то задача делается довольно легко.
Но я связный список делал на массиве, получалось лучше и быстрее, чем с объектами.
Lasciate ogni speranza, voi ch'entrate.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Связный список

Сообщение Alprog » 08.02.2009 (Вс) 6:44

Массивы бывают разных типов (UDT).

Функции добавления, удаления, перемещения элемента приходится писать для каждого типа массивов.
Может можно как-нибудь передать массив без указания конкретного типа. Вроде Object или Control только для UDT?

Или как-нибудь исхитриться, подменить таблицу, которая указывает на массив...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Связный список

Сообщение alibek » 08.02.2009 (Вс) 9:26

UDT какого вида? Содержит строки/объекты или фиксированного размера?
Lasciate ogni speranza, voi ch'entrate.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Связный список

Сообщение Alprog » 08.02.2009 (Вс) 10:00

Может содержать динамический массив :(

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Связный список

Сообщение alibek » 08.02.2009 (Вс) 11:27

Ну тогда не получится.
Используй публичные UDT и проект задай, как ActiveX EXE.
Lasciate ogni speranza, voi ch'entrate.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Связный список

Сообщение Alprog » 08.02.2009 (Вс) 12:20

Что-то не получается: всё равно ругается.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Связный список

Сообщение Alprog » 24.02.2009 (Вт) 16:26

Но я связный список делал на массиве


А массив был стандартных типов?
Потому что послать массив объектов можно только в функцию, в которой явно указано, какой тип объектов ожидается. Object не спасает.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 43

    TopList