Lista Simples em C
Publicado por Ivan Rocha 04/05/2007
[ Hits: 16.903 ]
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); }
Algoritmo de ordenação: Bubble Sort
Conceito (nota - aprovado - reprovado)
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Quebra de linha na data e hora no Linux Mint
Organizando seus PDF com o Zotero
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (9)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)