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;
Комментариев нет:
Отправить комментарий