Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Удаление головы (очередь)   Найти похожие ветки 

 
Аноним   (2004-04-09 16:05) [0]


pTurn = ^TTurn;
 TTurn = record
   data: byte;
   next: pTurn;
 end;
{...}
pHead : pTurn;
{...}
//хочу удалить голову, делаю
pHead := pHead^.next;
{ но память-то я не освободил !!!}


Как правильно "удалить" (переместить ее на след. эл-т) голову?


 
panov ©   (2004-04-09 16:11) [1]

А что, еще один указатель в программе добавить нельзя?


 
Digitman ©   (2004-04-09 16:13) [2]

var
 OldHead: pTurn;

OldHead := pHead;
pHead := pHead.next;
Dispose(OldHead);


 
WebErr ©   (2004-04-09 16:15) [3]


> panov ©   (09.04.04 16:11) [1]

:))))

var
 P: pTurn;
...
if not Assigned(pHead) then
 ShowMessage("Это ты зря сюда завёл IP-pointer!");
p := pHead;
pHead := pHead^.next;
dispose(p);


 
WebErr ©   (2004-04-09 16:16) [4]

Sorry За "p" в теле и "P" в var"е... :))))


 
Аноним   (2004-04-09 16:28) [5]

Можно юзать только перемнные типа


p : ^pTurn;


Тогда как?


 
WebErr ©   (2004-04-09 16:31) [6]


type
 PPType = ^pType;

var
 P, ppHead: PPType;

дальше так же! :))))


 
Аноним   (2004-04-09 16:31) [7]

И еще нужнf процедурf удаления произвольного эл-та


p:=@pHead;
while p^<>nil do begin
 if p^.data = d then begin  
   {???}
 end;
 p := @(p^^.next);
end;


 
WebErr ©   (2004-04-09 16:31) [8]

Блин - "Программирование для заики!" PPPPPointer!!! :))))


 
Аноним   (2004-04-09 16:33) [9]

TO WebErr ©

Просто я не знаю как по-другому пробежаться по очереди не изменяя адрес pHead.


 
WebErr ©   (2004-04-09 16:35) [10]

{???}
p не должен быть равен pHead
тогда
q - предыдущий элемент - это уж сам! :))))
q->next = p->next
ой, то есть
q^.next := p^.next;
dispose(p);
break;

Это всё в цикле, Халявщик!!! :))))


 
WebErr ©   (2004-04-09 16:37) [11]

Указатель - это тот же Integer, только значением его является какой-то адрес, где лежит значение того типа TypeX, на который он был объявлен var pXValue: ^TypeX;


 
WebErr ©   (2004-04-09 16:40) [12]

Это теоретически, а на практике - он гуляет где хочет, можно например изменить PInteger на PChar следующим образом:

var
 A: PInteger;
 B: PChar;
...
B := PChar(Pointer(A));

Чем я и пользуюсь!!! А-ХА-ХА-ХА-ХА!!! (<== ЗЛОДЕЙСКИЙ СМЕХ!)



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

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1080715256
BEN
2004-03-31 10:40
2004.04.25
Delphi 5 и Win2k


3-1080194959
denmin
2004-03-25 09:09
2004.04.25
Проблема с ADOTable.


7-1077204897
L.evil
2004-02-19 18:34
2004.04.25
Запись CD-Data


3-1080283711
Drozdov A
2004-03-26 09:48
2004.04.25
Tstrings


1-1081113111
vertal
2004-04-05 01:11
2004.04.25
Надежность программ на Delphi