Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************************************************
- * *
- * Isto é apenas um exercício de aluno *
- * Não espere um conteúdo profissional *
- * *
- *********************************************************/
- #include <stdio.h>
- #ifdef WIN32
- #include <conio.h>
- #define LIMPA_TELA system("cls")
- #else
- #include <ncurses.h>
- #define LIMPA_TELA system("clear")
- #endif // WIN32
- typedef struct lista
- {
- //criação de uma estrutura lista contendo o a variavel tipo inteira "item" e uma estrutura tipo ponteiro "next"
- int item;
- struct lista *next;
- }Lista;
- //Como quesito do exercicio 7 item A, a função que conta os elementos da lista e retorna o valor a função principal
- int contar_lista(Lista *l)
- {
- int cont = 0;
- Lista *auxiliar = l;
- //criação de uma estrutura auxiliar tipo ponteiro, igualando com a estrutura recebida pela função
- while(auxiliar != NULL)
- {
- // enquanto a estrutura auxiliar for diferente de nulo, ou seja, apresentar conteudo
- cont++; //incrementa o contador
- auxiliar = auxiliar -> next; //move a lista para a proxima estrutura
- }
- free(auxiliar);
- return cont; //retorna o numero de elementos da lista
- }
- //função para inserir dados na lista
- Lista *insere_lista(Lista *l , int dado)
- {
- Lista *novo = (Lista*)malloc (sizeof(Lista)); //alocação de memoria, cria estrutura nova
- novo -> item = dado; //item digitado pelo usuario será incluido na lista
- novo -> next = l; // lista enviada para função será igual a "next", estrutura tipo ponteiro, pertencente a lista "novo"
- return novo; //retorna a lista atualizada
- }
- //função que soma todos os elementos da lista
- //exercicio 7 item B
- int soma_elementos(Lista *l)
- {
- int soma = 0;
- Lista *auxiliar = l; //criação de lista auxiliar , igualando a lista l, a enviada para função
- while(auxiliar != NULL) //enquanto a lista auxiliar e diferente de nulo
- {
- soma += auxiliar -> item; //soma o "item" da lista em análise a variável "soma"
- auxiliar = auxiliar -> next; //movimentação da lista para proxima
- }
- free(auxiliar);
- return soma; //retorna valor da soma
- }
- //função para criar a lista em si
- Lista *cria_lista()
- {
- return NULL;
- }
- void menu()
- {
- LIMPA_TELA;
- printf("\n1 - Inserir ");
- printf("\n2 - Exibir quantidade de elementos ");
- printf("\n3 - Exibir soma dos elementos ");
- printf("\n4 - Sair\n\n");
- }
- //funcao principal
- int main()
- {
- Lista *l = cria_lista();
- int op, dado;
- //inicio do laco de repeticao
- do
- {
- menu();
- fflush(stdin);
- scanf("%i",&op);
- switch(op)
- {
- case 1:
- printf("\n\nDigite o valor:");
- fflush(stdin);
- scanf("%d",&dado);
- l = insere_lista( l , dado);
- break;
- case 2:
- printf("\n\nNumero de elementos da lista: %d",contar_lista(l));
- getch();
- break;
- case 3:
- printf("\n\nSoma dos elementos da lista: %d",soma_elementos(l));
- getch();
- break;
- }
- }
- while(op != 4);
- }
Advertisement
Add Comment
Please, Sign In to add comment