Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <conio.h>
- #define MAX 200
- typedef struct cel
- {
- int cod;
- char nome[MAX];
- char cc[MAX];
- char date[MAX];
- struct cel *prox;
- }celula;
- //celula* é o tipo do retorno da função
- //cria_celula, e eu ia colocar void nos parenteses da função para que a função não recebesse dados
- //coloca as variáveis a nulo
- celula* cria_celula()
- {
- celula *nova;
- nova = (celula*)malloc( sizeof(celula) );
- if(nova != NULL)
- {
- nova->prox = NULL;
- nova->nome[0] = '\0';
- nova->cc[0] = '\0';
- nova->date[0] = '\0';
- nova->cod = -1;
- }
- return nova;
- }
- //função que só serve para ir buscar aos apontadores os dados dos utentes
- void mostra(celula *x)
- {
- printf("\nCódigo: %d ", x->cod);
- printf("\nNome: %s",x->nome);
- printf("\nCartão de Cidadão: %s",x->cc);
- printf("\nData: %s",x->date);
- printf("\n");
- printf("\n");
- }
- //lista
- void listar(celula *lista)
- {
- celula *p;
- if (lista == NULL)
- {
- printf("\nnão tem nada.\n");
- getchar();
- return;
- }
- printf("\nlista: ");
- for (p = lista; p != NULL; p = p->prox)
- //chama a função anterior que mostra os dados
- {
- mostra(p);
- }
- getch();
- }
- //pesquisa... não sei
- celula *busca(celula *lista)
- {
- int num = 0;
- celula *p;
- printf("numero para procurar: ");
- scanf("%d",&num);
- getch();
- p = lista;
- while( (p != NULL) && (p->cod != num) )
- p = p->prox;
- return p;
- }
- void insere(celula **lista)
- {
- celula *nova = cria_celula();
- if(nova == NULL)
- {
- printf("Nao foi possivel criar uma nova celula!");
- getchar();
- return;
- }
- printf("Numero: ");
- scanf("%d",&nova->cod);
- printf("Nome: ");
- scanf(" %s",nova->nome);
- printf("Cartão de Cidadão: ");
- scanf(" %s",nova->cc);
- printf("Data: ");
- scanf(" %s",nova->date);
- nova->prox = *lista;
- *lista = nova;
- printf("Numero %d inserido.\n", nova->cod);
- getch();
- system("cls");
- }
- void remove_cel(celula **lista)
- {
- if (*lista == NULL)
- {
- printf("\nLista vazia. Sem itens para remover.\n");
- getchar();
- return;
- }
- else
- {
- celula *remover = *lista;
- *lista = remover->prox;
- printf("\nItem %d removido.\n",remover->cod);
- free(remover);
- getchar();
- }
- }
- void alterar(celula *lista)
- {
- celula *cel;
- cel = busca(lista);
- if(cel == NULL)
- {
- printf("Numero nao encontrado!");
- getchar();
- return;
- }
- printf("\nElemento encontrado:\n");
- mostra(cel);
- printf("Informe os novos valores:\n");
- printf("=========================\n");
- printf("Numero: ");
- scanf("%d",&cel->cod);
- printf("Nome: ");
- scanf(" %s",cel->nome);
- printf("Cartão de Cidadão: ");
- scanf(" %s",cel->cc);
- printf("Data: ");
- scanf(" %s",cel->date);
- }
- char menu(void)
- {
- system("cls");
- char opcao;
- printf(" Menu ");
- printf("\n*********************************");
- printf("\n* 1-Inserir *");
- printf("\n* 2-Listar *");
- printf("\n* 3-Buscar *");
- printf("\n* 4-Remove *");
- printf("\n* 5-Alterar *");
- printf("\n* 6-Inserir no fim *");
- printf("\n* 0-sair *");
- printf("\n*********************************\n");
- printf("Entre com a opcao desejada: ");
- scanf(" %c",&opcao);
- getchar();
- return opcao;
- }
- int main(void)
- {
- setlocale(LC_ALL, "Portuguese");
- celula *lista = NULL;
- char op;
- celula *p;
- do
- {
- op = menu();
- switch(op)
- {
- case '0':
- printf("\n\nEncerrando...\n");
- break;
- case '1':
- insere(&lista);
- break;
- case '2':
- listar(lista);
- break;
- case '3':
- p = busca(lista);
- if(p == NULL)
- {
- printf("Numero nao encontrado...");
- getchar();
- }
- else
- {
- printf("\nElemento encontrado!");
- printf("\n==========================");
- mostra(p);
- getchar();
- }
- break;
- case '4':
- remove_cel(&lista);
- break;
- case '5':
- alterar(lista);
- break;
- default:
- printf("Opcao invalida!");
- printf("Pressione enter para continuar...");
- getchar();
- }
- } while (op != '0');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement