Implementação Estrutura de Dados

7
FACULDADES INTEGRADAS STELLA MARIS ANDRADINA – FISMA MÁRCIO FERRAZ (RM 2735) IMPLEMENTAÇÃO DE ESTRUTURA DE DADOS PROFESSOR MÁRCIO TORRENTE

description

A partir do programa que implementar uma lista encadeada capas de incluir um e-mail na lista, complemente o mesmo programa permitindo a exclusão de e-mail desta lista.

Transcript of Implementação Estrutura de Dados

FACULDADES INTEGRADAS STELLA MARIS ANDRADINA FISMA

FACULDADES INTEGRADAS STELLA MARIS ANDRADINA FISMA

MRCIO FERRAZ

(RM 2735)

IMPLEMENTAO DE ESTRUTURA DE DADOSPROFESSOR MRCIO TORRENTEANDRADINA / SP

2010

A partir do programa que implementar uma lista encadeada capas de incluir um e-mail na lista, complemente o mesmo programa permitindo a excluso de e-mail desta lista.

Para isso, aps ler um e-mail e for diferente de fim, localiz-lo na lista. Caso j exista pergunte se deseja exclu-lo. Antes de proceder a excluso. Caso no exista proceder excluso.

program lista_de_emails;uses wincrt;const max=10; var lista:array[1..max]of string; proximo:array[1..max]of integer; fila:array[1..max]of integer; inicio,n,atual,anterior,primeiro,ultimo,qtd:integer; email: string; resp: char;procedure enqueue(dado:integer); begin if qtd = max then writeln('fila cheia') else begin if ultimo = max then ultimo:= 1 else begin if ultimo = max then fila[ultimo] := dado; qtd:= qtd + 1; end; end;procedure inicializafila; var i:=integer; begin for i:= 1 to max do enqueue(i); end;function dequeue : string;begin if qtd = 0 then

writeln ('fila vazia!') else

dequeue := fila[primeiro];

primeiro := primeiro + 1;

qtd := qtd + 1;end;procedure mostralista; begin atual := inicio; while atual 0 do begin writelbn(lista[atual]); atual := proximo[atual]; end; end;procedure excluidoinicio;begin inicio := proximo[atual]; n := n - 1; enqueue (atual);end;procedure excluidomeio;begin proximo[anterior] := proximo[atual]; n := n -1; enqueue (atual);end;procedure excluidofim;begin proximo[anterior] := 0; n := n - 1; enqueue (atual);end;procedure localizar(dado:string); begin ataul:= inicio; while (dado > lista[atual]) and (proximo[atual] 0 ) do begin anterior := atual; atual:= proximo[atual]; end;procedure incluirnoinicio (dado:string); begin novo:=dequeue; lista[novo] := dado; inicio:novo; proximo[novo] := atual; n:=n+1; end;procedure incluirnomeio(dado:string); begin novo:= dequeue; lista[novo] := dado; proximo[anterior] := novo; proximo[novo] := atual; n:= n + 1; end;procedure incluirnofim(dado:string); begin novo:=dequeue; lista[novo] := dado; proximo[anterior]:= novo; proximo[novo] := atual; n:=n +1; end;procedure excluir (dado : string);begin localizar (dado); if atual = 0 then begin

excluidoinicio (dado); end;

else begin

if (atual = inicio) and (dado < lista[atual]) then

excluidoinicio (dado);

end;

else begin

if (proximo[atual] = 0) and (dado > lista[atual]) then

excluidofim (dado);

else

excluidomeio (dado);

end; end;end;procedure incluir(dado:string); begin localizar(dado); if atual = 0 then incluirnoinicio(dado) else if dado = lista[atual] then begin

writeln ('este email j consta na agenda! deseja exclu-lo? (s/n)' );

resp := readkey;

if resp = 's' then

excluir (dado); end; else begin if (atual =inicio) and (dado < lista[atual]) then incluirnoinicio(dado) else if (proximo[atual] = 0) and (dado> lista[atual]) then incluirnofim(dado) else incluirnomeio(dado); end;begin inicio:=0; ultimo:=0; primeiro:=1; inicializafila; n:=0; repeat clrscr; writeln('lista de emails:'); mostrarlista; writeln; writeln('entre novo email(dig. "fim" para encerrar)'); readln(email); if email'fim then incluir(email) until email='fim';end.