Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
8-1073812436
Magician
2004-01-11 12:13
2004.04.25
Как используя компонент TMEDIAPLAYER масштабировать видео


14-1080801502
pasha_golub
2004-04-01 10:38
2004.04.25
философия


14-1080530013
тихий вовочка
2004-03-29 07:13
2004.04.25
Вам не надоело, что вас пугают?


3-1080303288
Виктор
2004-03-26 15:14
2004.04.25
Fireebird 1.5-сколько подключено пользователей


1-1080740114
TankMan
2004-03-31 17:35
2004.04.25
Какое сообщение приходит при прокручивании скрола в ListBox?




   Наверх