Pascal/Turbo Pascal - TAD LISTA DOBLEMENTE ENLAZADA

 
Vista:
sin imagen de perfil

TAD LISTA DOBLEMENTE ENLAZADA

Publicado por Estudiante (6 intervenciones) el 03/04/2015 16:29:46
Hola, podríais ayudarme a comprobar si este código está bien? se trata de un TAD Lista Doblemente Enlazada SIN puntero cabecera ni final. Muchas gracias
1
2
3
4
5
6
7
8
9
10
PROCEDURE Construir( elemento: TInfo; VAR lista: Lista);
VAR
  nuevo: Lista;
BEGIN
  New(nuevo);
  nuevo^.info:= elemento;
  nuevo^.ant:= NIL;
  nuevo^.sig:= lista^.ant;
  lista:= nuevo;
END;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

TAD LISTA DOBLEMENTE ENLAZADA

Publicado por ramon (2158 intervenciones) el 03/04/2015 23:21:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{Mira que pasa como apreciaras queda desligados los punteros}
 
 uses
     crt;
  type
 tinfo = string;
 listas = ^punterodatos;
 punterodatos = record
                info : tinfo;
                sig, ant : listas;
              end;
 
var
  temp, lista : listas;
  t : integer;
 
 
 
PROCEDURE Construir(elemento: TInfo; VAR lista: Listas);
VAR
  nuevo: Listas;
BEGIN
  New(nuevo);
  nuevo^.info:= elemento;
  nuevo^.ant:= NIL;
  nuevo^.sig:= lista^.ant;
  lista:= nuevo;
  writeln('   ',nuevo^.info);
END;
 
 
  begin
     clrscr;
     writeln('   Datos Cargados ');
     for t := 1 to 9 do
     begin
     Construir(chr((t + 48)),lista);
     end;
     writeln;
     writeln('   Datos Tomados');
     temp := lista;
     repeat
        writeln('    ',t,'  ',temp^.info);
        temp := temp^.ant;
     until (temp = nil) or (keypressed);
     readkey;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

TAD LISTA DOBLEMENTE ENLAZADA

Publicado por Estudiante (6 intervenciones) el 04/04/2015 20:01:51
si me sale runtime error es que hay un valor basura no? sabes como puedo solucionarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TAD LISTA DOBLEMENTE ENLAZADA

Publicado por ramon (2158 intervenciones) el 04/04/2015 20:57:49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{Mira esto}
 
program punterotad;
 uses
   crt;
 type
    ppunt = ^punteros;
    punteros = record
          dat : string;
          ant, sig : ppunt;
        end;
 
   var
     actu, temp : ppunt;
     y : integer;
 
   procedure cargapunteros;
   begin
       for y := 1 to 9 do
       begin
          if temp = nil then
          begin
             new(actu);
             actu^.dat := chr(y + 48);
             actu^.ant := nil;
             actu^.sig := nil;
             temp := actu;
          end
       else
          begin
             new(actu);
             actu^.dat := chr(y + 48);
             actu^.ant := temp;
             temp^.sig := actu;
             actu^.sig := nil;
             temp := actu;
          end;
       end;
    end;
 
  procedure muestrapunteros;
  var
    mas, ver : ppunt;
  begin
     ver := temp;
     writeln('   Atras ');
     writeln;
     while ver^.ant <> nil do
     begin
        writeln('    ',ver^.dat);
        ver := ver^.ant;
     end;
       writeln('    ',ver^.dat);
       writeln;
       writeln('  Alante ');
       mas := ver;
       writeln;
       while mas <> nil do
       begin
       writeln('    ',mas^.dat);
       mas := mas^.sig;
       end;
     readkey;
  end;
 
 
  begin
     clrscr;
     temp := nil;
     cargapunteros;
     clrscr;
     muestrapunteros;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

TAD LISTA DOBLEMENTE ENLAZADA

Publicado por Estudiante (6 intervenciones) el 04/04/2015 20:59:11
ya lo he conseguido hacer, muchas gracias Ramón!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar