안녕하세요 저는 파스칼을 배우고 일부 함수를 테스트하고 있습니다.
이렇게 재귀 삽입 절차를 만들었습니다. 노드가있는 경우 두 키를 비교하고 그렇지 않은 경우 새 노드를위한 공간을 만드십시오.포인터를 사용하여 while 루프로 파스칼을 변경하는 방법
procedure INSERT (KEY : integer; var NODE : NODEPTR);
begin
if NODE = Nil then
begin
New (NODE);
NODE^.KEY := KEY;
NODE^.LEFT := Nil;
NODE^.RIGHT := Nil
end
else
if KEY < NODE^.KEY then
INSERT (KEY, NODE^.LEFT)
else
INSERT (KEY, NODE^.RIGHT)
end;
그리고 재귀 함수를 while 루프로 변경하려고합니다. 이렇게 절차를 만들었습니다.
노드가 있으면 노드가 루프 할 때까지 노드가 비어 있습니다. 및 루프가 위에있을 때, 첫 번째 노드가 루트 때 루프가 사실이지만, 새로운 노드
procedure INSERT (KEY : integer; var NODE : NODEPTR);
begin
while NODE <> nil do
begin
if KEY < NODE^.KEY then
NODE:=NODE^.LEFT
else
NODE:=NODE^.RIGHT
end;
New (NODE);
NODE^.KEY := KEY;
NODE^.LEFT := Nil;
NODE^.RIGHT := Nil
end;
을하고이 코드 를 실행하지만,이 후, 동안 false로 루프를 변경하고 새 노드를 한 후에.
if KEY < NODE^.KEY then
NODE:=NODE^.LEFT
else
NODE:=NODE^.RIGHT
결국 노드 연결이없고이 프로그램은 새 노드를 계속 만듭니다.
내가 놓친 것이 있습니까? 또는 두 번째 코드에 대해 즉흥적으로 작업 할 수 있습니까? 미리 감사드립니다.