Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

Стек элементы которого - объекты   Найти похожие ветки 

 
Kolan ©   (2005-09-13 16:14) [0]

Здравствуйте,
 Понадобилось сделать стек. Если исопользовать в качестве элементов стека записи то всё легко.
 
 PNode = ^TNode;

 TNode = record
   FData: TNodeData;
   FNext: PNode;
 end;


 Как быть в случае если элемент стека - это объект. Следующие правильно?
 
 TNode = class
 private
   FNext: TNode;
 protected
 public
 end;
 

 В этом описании FNext будет ссылкой на следуюший?
 Или экземпляр класса TNode будет какбы в себе содержать еще один такой же Node?


 
Anatoly Podgoretsky ©   (2005-09-13 16:20) [1]

Не похоже на стек


 
Ega23 ©   (2005-09-13 16:20) [2]

 В этом описании FNext будет ссылкой на следуюший?

Если ты туда положишь указатель на следующий объект, то - да, будет.


 
Ega23 ©   (2005-09-13 16:22) [3]

Не похоже на стек

Почему? Товарищч LIFO пытается организовать. Точнее - просто список, а LIFO или LILO - это уж как получится...


 
begin...end ©   (2005-09-13 16:23) [4]


> Kolan ©   (13.09.05 16:14)
> Понадобилось сделать стек.

Contnrs.TStack


 
Fay ©   (2005-09-13 16:24) [5]

Ega23 ©   (13.09.05 16:22) [3]
LILO это FIFO ?


 
Zeqfreed ©   (2005-09-13 16:28) [6]

Kolan ©   (13.09.05 16:14)
Every class (and therefore every component) is really a pointer. The compiler automatically dereferences class pointers for you, so most of the time you do not need to think about this. The status of classes as pointers becomes important when you pass a class as a parameter. In general, you should pass classes by value rather than by reference. The reason is that classes are already pointers, which are references; passing a class by reference amounts to passing a reference to a reference.

Fay ©   (13.09.05 16:24) [5]
А можно ещё сказать nInO, n-ым зашел, n-ым вышел ;)


 
Kolan ©   (2005-09-13 16:37) [7]


> Если ты туда положишь указатель на следующий объект

Ну да в смысле это ссылка - правильно.


> Не похоже на стек

Это элемент стека.

Я уже кое-что сделал для записей:
Вот родитель стека, очереди итд
TCustomList = class(TObject)
 private
   FCount: Integer;
   FHead: PNode;
   FFormHandle: THandle;
 protected


Сдесь FHead - указатель на вершину.
Если я использую обекты то допустим создание элемента и добавление его в стек примерно будет выглядеть так?

(Как работать со стеком вообше я знаю...)

Node := TNode.Create;
Создал новый.

А теперь мне надо чтобы FHead указывал на Этот Node.

Как это будет выглядеть? Мне надо FHead создать?
В ообщем как это сделать(пример)?

С записями это выглядит так
var
 Node: PNode;
begin
 inherited Add(Data);
 Node := inherited NewNode(Data);
   Создал новый
 if Head <> nil then
   Node.FNext := Head;
 Head := Node;
Head указывает на новый.
end;


 
Kolan ©   (2005-09-13 16:40) [8]


> Fay ©   (13.09.05 16:24) [5]

Lats In First Out and so on... :)


 
Kolan ©   (2005-09-13 16:48) [9]


> А теперь мне надо чтобы FHead указывал на Этот Node.

Похоже разобрался.
Просто FHead := Node;? И всё? И FHead создавать ненадо...


 
Zeqfreed ©   (2005-09-13 17:07) [10]

Kolan ©   (13.09.05 16:48) [9]

> И FHead создавать ненадо...

Не надо. Если ты его создашь - получишь ещё один экземпляр класса в памяти.


 
Kolan ©   (2005-09-13 17:13) [11]


> Zeqfreed ©   (13.09.05 17:07) [10]

Ну всё, а то чтото я запарился. Всех благодарю за помощь. :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
6-1119358405
bugman
2005-06-21 16:53
2005.10.16
UDP port mapping


3-1125928803
dragoon
2005-09-05 18:00
2005.10.16
Получение записи в DBGrid; динам. обновление ComboBox


2-1126251458
Ragazor
2005-09-09 11:37
2005.10.16
With Tpanel.Create(scroolbox)....


3-1125947025
sergey007
2005-09-05 23:03
2005.10.16
BDE и alias ы


1-1127574107
Vitaliy
2005-09-24 19:01
2005.10.16
Динамические массивы в делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский