我想按升序创建一个列表:
program ejListas;
type
tLista = ^lista
; lista = record
valor : Integer
; sgte : tLista
end
;
procedure insertarOrdenado ( var lista: tLista; dato: Integer );
var cursor
, listaAux
:tLista
;
begin
if ( lista <> nil ) then
begin
new ( listaAux );
listaAux^.valor := dato;
cursor := lista;
while ( cursor^.sgte <> nil ) and ( cursor^.valor < dato ) do
cursor := cursor^.sgte;
listaAux^.sgte := cursor^.sgte;
cursor^.sgte := listaAux;
end
else
begin
new ( lista );
lista^.valor := dato;
lista^.sgte := nil;
end;
end;
procedure imprimirLista ( lista: tLista );
var cursor
:tLista
;
begin
cursor := lista;
while ( cursor <> nil ) do
begin
writeln ( cursor^.valor );
cursor := cursor^.sgte;
end;
end;
var vLista :tLista;
dato:Integer;
begin
read ( dato );
while ( dato <> -1 ) do
begin
insertarOrdenado ( vLista, dato );
read ( dato );
end;
imprimirLista ( vLista );
end.
所以,当我运行程序时,插入的数字是:
1 - 5 - 58 - 95 - 3 - 0
预期结果是:
0 - 1 - 3 - 5 - 58 - 95
但是,当程序写入列表时:
1 - 0 - 5 - 3 - 58 - 95
那么,这里有什么问题呢?