Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Chamada de Bibliotecas
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <string.h>
- // Variavel global
- #define MaxTam 5
- typedef int TipoApontador; //não entendi
- typedef int TipoChave; //nao entendi
- typedef struct TipoItem
- {
- char nome[30];
- } TipoItem;
- typedef struct TipoLista
- {
- TipoItem Item[MaxTam]; //não entendi
- TipoApontador Primeiro, Ultimo; //não entendi
- } TipoLista;
- //não entendo o porque de asterisco na frete de *Lista, e os parâmetros utilizados.
- int Insere(TipoItem x, TipoLista *Lista);
- int Retira(int p, TipoLista *Lista, TipoItem *x);
- void FazListaVazia(TipoLista *Lista);
- int ListaVazia(TipoLista *Lista);
- void InsereItens(TipoLista *Lista);
- void RetiraItens(TipoLista *Lista);
- void Imprime(TipoLista *Lista);
- void Parada(void);
- int main() {
- TipoLista Lista;
- FazListaVazia(&Lista); // faz a Lista ficar vazia
- int opcao;
- do {
- system("cls");
- printf("Implementação de Lista Linear através de vetor ou arranjo.\n\n");
- printf("**** MENU PRINCIPAL *****\n");
- printf("[ 1 ] Inserir Itens\n");
- printf("[ 2 ] Retirar Itens\n");
- printf("[ 0 ] Encerrar o Programa\n");
- printf("[ ? ] Opção Desejada\n");
- do {
- scanf("%d", &opcao);
- } while ((opcao < 0) || (opcao > 2));
- switch (opcao) {
- case 1: InsereItens(&Lista); break;
- case 2: RetiraItens(&Lista);
- }
- } while (opcao != 0);
- }
- void FazListaVazia(TipoLista *Lista) {
- Lista->Ultimo = -1;
- }
- int ListaVazia(TipoLista *Lista) {
- return(Lista->Ultimo == -1);
- }
- void Imprime(TipoLista *Lista) {
- int i;
- system("cls");
- for (i=0; i<=Lista->Ultimo; i++)
- printf("%d- %s\n", i, Lista->Item[i].nome);
- }
- int Insere(TipoItem x, TipoLista *Lista) {
- if (Lista->Ultimo > MaxTam)
- {
- printf("Lista esta cheia\n");
- return(0); // Erro: Lista Cheia !
- }
- else
- {
- Lista->Ultimo = Lista->Ultimo + 1;
- Lista->Item[Lista->Ultimo] = x; // item inserido no final da lista
- return(1); // Item inserido com sucesso
- }
- }
- int Retira(int p, TipoLista *Lista, TipoItem *x)
- {
- int i;
- if ((ListaVazia(Lista)) || (p < 0) || (p > Lista->Ultimo))
- return(0); // Erro: Lista vazia ou posição não existe.
- else
- {
- *x = Lista->Item[p]; // item retornado
- for (i=p; i<=(Lista->Ultimo-1); i++)
- Lista->Item[i] = Lista->Item[i+1];
- Lista->Ultimo = Lista->Ultimo - 1;
- return(1);
- }
- }
- void InsereItens(TipoLista *Lista) {
- fflush(stdin);
- TipoItem x;
- while (1) {
- Imprime(Lista);
- printf("\nInforme um nome do item a ser inserido na lista, (FIM) para encerrar:\n");
- gets(x.nome);
- if (strcmp(x.nome, "FIM") == 0)
- break;
- if (!Insere(x, Lista)) {
- printf("\nErro: lista cheia !");
- Parada();
- }
- }
- }
- void RetiraItens(TipoLista *Lista) {
- fflush(stdin);
- TipoItem x;
- int p;
- while (1) {
- Imprime(Lista);
- printf("\nInforme a posição do item a ser retirado da lista, (-1) para encerrar:\n");
- scanf("%d", &p);
- if (p == (-1))
- break;
- if (!Retira(p, Lista, &x))
- printf("\nErro: lista vazia ou posição inválida !");
- else
- printf("\n%s foi retirado da lista.", x.nome);
- Parada();
- }
- }
- void Parada(void) {
- printf("Pressione [algo] para prosseguir.");
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement