22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Inicio receber Prox para que este ponteiro aponte s<strong>em</strong>pre para o último el<strong>em</strong>ento a dar entrada. T<strong>em</strong>os a<br />

seguinte função:<br />

void CriaLista()<br />

{<br />

Inicio = NULL;<br />

printf("Digite os numeros (-1 para encerrar)\n");<br />

do<br />

{<br />

Prox = (struct TEl<strong>em</strong>ento *)malloc(5);<br />

scanf("%d",&(*Prox).Valor);<br />

if ((*Prox).Valor != -1)<br />

{<br />

(*Prox).p = Inicio;<br />

Inicio = Prox;<br />

}<br />

}<br />

while ((*Prox).Valor != -1);<br />

}<br />

Para exibir a lista (ou realizar nela qualquer processamento), basta percorrê-la desde seu início<br />

(Prox = Inicio) até o seu final ((*Prox).p = NULL).<br />

void ExibeLista()<br />

{<br />

Prox = Inicio;<br />

while (Prox != NULL)<br />

{<br />

printf("%d ", (*Prox).Valor);<br />

Prox = (*Prox).p;<br />

}<br />

printf("\n");<br />

}<br />

Para deletar um el<strong>em</strong>ento da lista é necessário que, quando ele for localizado, se armazene o ponteiro<br />

do el<strong>em</strong>ento anterior a ele e o ponteiro que aponta para ele. Se o el<strong>em</strong>ento a ser deletado for o primeiro, basta<br />

fazer Inicio apontar para o segundo el<strong>em</strong>ento; se o el<strong>em</strong>ento a ser excluído for outro el<strong>em</strong>ento, basta fazer o<br />

ponteiro do el<strong>em</strong>ento anterior para o el<strong>em</strong>ento seguinte e devolver ao sist<strong>em</strong>a a posição de m<strong>em</strong>ória ocupada<br />

pelo el<strong>em</strong>ento a ser excluído.<br />

void Deleta(int n)<br />

{<br />

struct TEl<strong>em</strong>ento *Ant;<br />

Prox = Inicio;<br />

Ant = Inicio;<br />

while ((Prox != NULL) && ((*Prox).Valor != n))<br />

{<br />

Ant = Prox;<br />

Prox = (*Prox).p;<br />

}<br />

if (Prox != NULL)<br />

{<br />

if ((Ant == Inicio) && (Prox == Inicio))<br />

Inicio = (*Prox).p;<br />

else<br />

(*Ant).p = (*Prox).p;<br />

free(Prox);<br />

}<br />

else<br />

printf("El<strong>em</strong>ento nao esta lista \n");

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!