Problema com apontadores
20/01/2004
0
Estou fazendo uma lista encadeada mas um erro de execucao ocorre quando o comando new(apontador) é executado. O codigo está abaixo.
Eu tenho este codigo em C++ e a unica diferenca é que a classe node nao é aninhada a classe Lista. Eu nao sei fazer classe aninhada em Pascal. Isto pode ser o motivo do erro. Obrigado.
procedure TLista.FLVazia;
begin
new(Inicio);//Inicia a lista com um Node = 0
Inicio:=Fim;
Inicio^.NextPtr:=nil;
end;
A estrutura da classe é esta
type Node=class;//forward
apontador=^Node;
Node = class
private
data:integer;
NextPtr:apontador;
public
constructor Node();
procedure SetData(item:integer);
function GetData:integer;
procedure SetNextPtr(aptr:apontador);//Faz com que o NextPtr aponte para o aptr
function GetNextPtr:apontador;//Retorna o apontador que o nextptr aponta
end;
type TLista = class
private
Inicio:apontador;
Fim:apontador;
public
function GetFim():apontador;
function GetInicio():apontador;
procedure FLVazia();
procedure InsereNoFinal(dat:integer);
procedure RetiraUltimo();
procedure Insere(dado:integer;posicao:integer);
procedure Retire(posicao:integer);
end;
Eu tenho este codigo em C++ e a unica diferenca é que a classe node nao é aninhada a classe Lista. Eu nao sei fazer classe aninhada em Pascal. Isto pode ser o motivo do erro. Obrigado.
procedure TLista.FLVazia;
begin
new(Inicio);//Inicia a lista com um Node = 0
Inicio:=Fim;
Inicio^.NextPtr:=nil;
end;
A estrutura da classe é esta
type Node=class;//forward
apontador=^Node;
Node = class
private
data:integer;
NextPtr:apontador;
public
constructor Node();
procedure SetData(item:integer);
function GetData:integer;
procedure SetNextPtr(aptr:apontador);//Faz com que o NextPtr aponte para o aptr
function GetNextPtr:apontador;//Retorna o apontador que o nextptr aponta
end;
type TLista = class
private
Inicio:apontador;
Fim:apontador;
public
function GetFim():apontador;
function GetInicio():apontador;
procedure FLVazia();
procedure InsereNoFinal(dat:integer);
procedure RetiraUltimo();
procedure Insere(dado:integer;posicao:integer);
procedure Retire(posicao:integer);
end;
Cristianoar
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)