Lista Simples em C
Publicado por Ivan Rocha 04/05/2007
[ Hits: 16.936 ]
Homepage: http://homes.dcc.ufba.br/~ivan062/bahia
Lista encadeada simples em C, com funções de inserir, remover, consultar, e imprimir valores da lista.
# include<stdio.h> # include<stdlib.h> # include<string.h> # include<ncurses.h> # include<curses.h> # include<ctype.h> //#define MALLOC(x) ((x *) malloc (sizeof(x))) typedef struct ElemListaint{ int chave; struct ElemListaint *ant, *prox; }Listaint; void inicializa(Listaint **l){ *l = NULL; }; int consulta(Listaint *l, int x){ Listaint *p; int achou = 0; p = l; while((p != NULL) && (!achou)){ if( p -> chave == x) achou = 1; else p = p -> prox; } return (achou); }; int insere(Listaint **l, int x){ Listaint *p; int inserido; if(!consulta(*l, x)){ p = ((Listaint *) malloc (sizeof(Listaint))); p -> chave = x; p -> prox = *l; *l = p; } inserido = 1; return (inserido); }; int remover(Listaint **l, int x){ Listaint *p, *q; int achou = 0; p = *l; q = (*l) -> prox; if((*l) -> chave == x){ (*l) = (*l) -> prox; free(p); //free(q); //printf("\nElemento Removido com Sucesso! "); achou = 1; }else{ while(q){ if(q -> chave == x){ p -> prox = q -> prox; //p = NULL; free(q); //q = NULL; achou = 1; }else p = p -> prox; q = q -> prox; } } return (achou); } void imprime(Listaint *l){ Listaint *p; p = l; printf("\nLista de Inteiros: "); while(p){ printf("%d ", p -> chave); p = p -> prox; } getchar(); } int main(){ char op[1]; Listaint *l; int a; inicializa(&l); for(;;){//do{ printf("\n\n"); system("clear"); printf("Programa Lista Duplamente Encadeada!\n\n"); printf("a. Insere na Lista;\n"); printf("b. Remove da Lista;\n"); printf("c. Consulta na Lista;\n"); printf("d. Imprime Lista;\n"); printf("s. SAIR.\n\n"); printf("OPCAO: "); //printf("{FONTE}3310;25H["); //printf("{FONTE}33[8;8H"); gets(op); switch(toupper(op[0])){ case 'A':{ fflush(stdin); //system("clear"); printf("\nDigite o Elemento a Inserir: "); scanf("%d", &a); a = insere(&l, a); //****************************************88 if(a) printf("\nElemento Inserido com Sucesso!\n"); else printf("\nElemento nao Inserido!\n"); usleep(1000000); }break; case 'B':{ fflush(stdin); //system("clear"); if (l == NULL){ printf("\nLista Vazia!!!"); getchar(); }else{ printf("\nDigite o Elemento a Remover: "); scanf("%d", &a); a = remover(&l, a); if (a) printf("\nElemento Removido com Sucesso!\n"); else printf("\nNao existe este Elemento!\n"); } usleep(1000000); }break; case 'C':{ fflush(stdin); if (l == NULL){ printf("\nLista Vazia!!!"); getchar(); }else{ printf("\nDigite o Elemento a Consultar: "); scanf("%d", &a); a = consulta(l, a); //******************************************* //printf("{FONTE}33[x;yH"); if(a) printf("\nValor encontrado na lista!!!\n"); else printf("\nValor nao encontrado na lista!!!\n"); usleep(1000000); } }break; case 'D':{ fflush(stdin); if(l == NULL){ printf("\nLista Vazia!!!"); getchar(); }else imprime(l); }break; case 'S':{ fflush(stdin); printf("\nTem certeza? (S/N) "); gets(op); if(toupper(op[0]) == 'S'){ system("clear"); exit(0); } }break; default:{ fflush(stdin); if(toupper(op[0]) != 'S') printf("Opcao incorreta, digite novamente!"); //usleep(1000000); }break; } }//while(toupper(op[0]) != 'S'); return (0); }
Soma dos pares menores que ele
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
baschrc customizado pegeui vários. (2)
Rust é o "C da nossa geração"? (8)