Lista Encadeada Dupla
Ensaios: Lista Encadeada Dupla. Pesquise 862.000+ trabalhos acadêmicosPor: willfrias • 5/10/2013 • 292 Palavras (2 Páginas) • 550 Visualizações
LISTA ENCADEADA DUPLA
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct no {
int mat;
struct no *prox;
struct no *ant; };
typedef struct no lista;
lista *inicio=NULL;
lista *atual=NULL;
void inicializa(){
inicio =(lista*) malloc (sizeof (lista));
if (!inicio){
printf("\nNao existe espaco na memoria!");
exit(1); }
inicio->ant = NULL;
inicio->prox = NULL;
atual = inicio;
}
void insere()
{
lista *novo=NULL;
novo = (lista*) malloc (sizeof (lista));
if (!novo){
printf("\nNao existe espaco na memoria!");
exit(1);
}
printf("\nDigite a matricula: ");
scanf("%d",&novo->mat);
fflush(stdin);
novo->ant = atual;
novo->prox = NULL;
atual->prox = novo;
atual = novo;
}
void imprime(){
if (inicio->prox==NULL)
printf("\nLista vazia!\n");
else{
atual=inicio;
do{
atual=atual->prox;
printf("\n\nMatricula: %d",atual->mat);
} while (atual->prox!=NULL); }}
void busca(){
int matbusca,encontrou=0;
printf("\n\nDigite a matricula para busca: ");
scanf("%d",&matbusca);
if (inicio->prox==NULL)
printf("\nLista vazia! Busca nao pode ser processada!\n");
else{
for (atual=inicio->prox; atual!=NULL; atual=atual->prox){
if (matbusca==atual->mat){
printf("\n\nMatricula: %d",atual->mat);
encontrou=1;
}
if (atual->prox==NULL && encontrou==0){
printf("\nRegistro nao encontrado!\n");
break;
}
if (atual->prox==NULL)
break;
} }}
void exclui(){
int matbusca,encontrou=0;
printf("\n\nDigite a matricula para exclusao: ");
scanf("%d",&matbusca);
if (inicio->prox==NULL)
printf("\nLista vazia! Busca para exclusao nao pode ser processada!\n");
else{
for (atual=inicio->prox; atual!=NULL; atual=atual->prox){
if (matbusca==atual->mat){
encontrou=1;
if (atual->prox==NULL){
atual->ant->prox = NULL;
free(atual);
atual
...