serial10
(usa Ubuntu)
Enviado em 11/04/2011 - 11:53h
oi pesoal!
to tentando fazer o programa rodar no code blocks mas não consigo se puderem me ajudar eu agradeço...
eu tmb estava tentando des de onte fazer a busca retornar um ponteiro para o elemento encontrado ou um para o sentinela caso não encontra mas desisti...
se alguem puder me ajudar eu ficarei muito grato!
#include <stdio.h>
#include <stdlib.h>
struct t{
int valor;
struct t *prox, *ant;
};
typedef struct t TElemento;
void Imprime(TElemento *lista){
TElemento *aux;
aux = lista;
while (aux){
printf("%d\n",aux->valor);
aux = aux->prox;
}
}
int Busca(TElemento *lista,int chave){
TElemento *aux;
aux = lista;
while ((aux)&&(aux->valor!=chave))
aux = aux->prox;
if (aux) return 1;
else return 0;
}
int Remove(TElemento **lista, int chave){
TElemento *atual;
if (!(*lista)) return 0;
else{
atual = (*lista);
while ((atual) && (atual->valor!=chave))
atual = atual->prox;
if (atual){
if (atual->prox) {
atual->prox->ant = atual->ant;
}
if (atual->ant){
atual->ant->prox = atual->prox;
}
else (*lista) = atual->prox;
free(atual);
return 1;
}
else return 0;
}
}
int Insere(TElemento **lista,int chave){
TElemento *novo;
novo = (TElemento *) malloc(sizeof(TElemento));
if (!novo){
return 0;
}
else{
novo->valor = chave;
novo->prox = (*lista);
novo->ant = NULL;
if (*lista) (*lista)->ant = novo;
(*lista) = novo;
return 1;
}
}
TElemento* CriarLista(){
TElemento *lista;
lista = ((TElemento*)malloc(sizeof(TElemento)));
lista->prox = lista;
lista->ant = lista;
return lista;
}
int main(){
TElemento *lista;
lista = CriarLista();
int op, chave;
do{
printf("Escolha uma opcao:\n");
printf("[1] Inserir elemento\n");
printf("[2] Remover elemento\n");
printf("[3] Buscar elemento\n");
printf("[4] Imprimir lista\n");
printf("[5] Sair\n");
scanf("%d",&op);
switch (op){
case 1:{
printf("Qual numero deseja inserir? ");
scanf("%d",&chave);
Insere(lista ,chave);
break;
}
case 2:{
printf("Qual numero deseja remover? ");
scanf("%d",&chave);
Remove(lista,chave);
break;
}
case 3:{
printf("Qual numero deseja procurar? ");
scanf("%d",&chave);
Busca(lista,chave);
break;
}
case 4:{
Imprime(lista);
break;
}
}//switch
}while(op != 5);
return 0;
}