Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: работа с указателем для списка  (Прочитано 4359 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eugrita
Помогающий

ru
Offline Offline

« : 07-06-2011 09:11 » 

Есть класс
Код:
Type TElement = class
    suc: ^TElement;
    procedure Print;virtual; {}
    constructor Init;
    destructor Destroy;
  end;
type TE=^TElement;
надо написать функцию добавления элемента в список.
Для убедительности приведу работающий код C++
Код:
 void TQueue::addEL(TElement *e)  //добавление элемента
 {
  if (first==NULL)
   { first=last=e; e->nxt=NULL;}
   else
   { e->nxt=first;first=e;}
 }
добился чтобы в дельфевую addEL передавался также указатель - для этого ввелен тип TE
Код:
procedure TQueue.addEL(var val: TE);
  begin
    if first=nil  then
       begin first:=val; last:=val; end
    else
     begin val.suc^:=@(first); first:=val; end;
  end;
получилось очень накручено - верно ли? другие попытки просто компилятор не пропускал
« Последнее редактирование: 07-06-2011 09:56 от eugrita » Записан
zubr
Гость
« Ответ #1 : 07-06-2011 10:14 » 

Код:
type
TElement = class
    suc: TElement;
    procedure Print;virtual; {}
    constructor Create;
    destructor Destroy;
 end;

procedure TQueue.addEL(val: TElement);
 begin
    if first=nil  then
    begin
         first:=val;
         last:=val;
    end
    else
     begin
        val.suc:=first;
        first:=val;
    end;
 end;
В объектном паскале тип класс - это на самом деле указатель на класс, поэтому нет смысла городить двойные указатели.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines