Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Не изменяется указатель в Delphi

ToDel := root^.right; ToDel := ToDel^.right;
После этих 2 строчек кода root^.right не изменяется.
root^.right := root^.right^.right;
А после этой изменяется , как сделать что бы в первом случае также изменялось ?
TNode = ^Node; Node = record key :TKey; data :TData; left, right,parent:TNode; end; root : TNode; ToDel: TNode;


Ответ

Все логично. ToDel := root^.right; копирует указатель из right в ToDel. Указатель в root и не должен поменяться. Если вам нужно поменять root, делайте так:
ToDel := root^.right; root^.right := ToDel^.right; // здесь нужно освободить память, на которую указывает ToDel, если она вам больше нужна.

P.S. Типы для структур лучше называть с буквой T в начале (от слова Type), а типы для указателей называть с буквой P в начале (от слова Pointer). тогда будет проще и вам и другим разбираться в вашем коде.
PNode = ^TNode; TNode = record key: TKey; data: TData; left: PNode; right: PNode; parent: PNode; end;

Комментариев нет:

Отправить комментарий