#include <stdio.h>
#include <stdlib.h>

#define MAX 100 // Tamanho máximo da lista

// Estrutura da Lista Sequencial
typedef struct {
    int itens[MAX];
    int fim; // Representa a quantidade atual de elementos na lista
} Lista;

// a) Criar uma lista L
void criarLista(Lista *L) {
    L->fim = 0;
}

// Verificar se a lista está vazia
int estaVazia(Lista *L) {
    return L->fim == 0;
}

// Verificar se a lista está cheia
int estaCheia(Lista *L) {
    return L->fim == MAX;
}

// 1 - EXIBIR LISTA
void exibirLista(Lista *L) {
    if (estaVazia(L)) {
        printf("\nA lista esta vazia.\n");
        return;
    }
    printf("\n--- ELEMENTOS DA LISTA ---\n");
    for (int i = 0; i < L->fim; i++) {
        printf("Posicao %d: %d\n", i, L->itens[i]);
    }
    printf("--------------------------\n");
}

// 2 - INSERIR
void inserir(Lista *L) {
    if (estaCheia(L)) {
        printf("\nErro: A lista esta cheia!\n");
        return;
    }
    int elemento;
    printf("\nDigite o valor a ser inserido: ");
    scanf("%d", &elemento);
    
    L->itens[L->fim] = elemento;
    L->fim++;
    printf("\nElemento inserido com sucesso!\n");
}

// 3 - REMOVER
void remover(Lista *L) {
    if (estaVazia(L)) {
        printf("\nErro: A lista esta vazia, nao ha o que remover.\n");
        return;
    }
    int posicao;
    printf("\nDigite a posicao do elemento a remover (0 a %d): ", L->fim - 1);
    scanf("%d", &posicao);

    if (posicao < 0 || posicao >= L->fim) {
        printf("\nPosicao invalida!\n");
        return;
    }

    // Deslocar elementos para preencher o espaço
    for (int i = posicao; i < L->fim - 1; i++) {
        L->itens[i] = L->itens[i + 1];
    }
    L->fim--;
    printf("\nElemento removido com sucesso!\n");
}

// 4 - EXIBIR ELEMENTO
void exibirElemento(Lista *L) {
    if (estaVazia(L)) {
        printf("\nA lista esta vazia.\n");
        return;
    }
    int posicao;
    printf("\nDigite a posicao do elemento que deseja ver (0 a %d): ", L->fim - 1);
    scanf("%d", &posicao);

    if (posicao < 0 || posicao >= L->fim) {
        printf("\nPosicao invalida!\n");
        return;
    }

    printf("\nO elemento na posicao %d e: %d\n", posicao, L->itens[posicao]);
}

// 5 - EXIBIR POSIÇÃO
void exibirPosicao(Lista *L) {
    if (estaVazia(L)) {
        printf("\nA lista esta vazia.\n");
        return;
    }
    int valor, encontrado = 0;
    printf("\nDigite o valor que deseja procurar: ");
    scanf("%d", &valor);

    printf("\nO valor %d foi encontrado nas posicoes: ", valor);
    for (int i = 0; i < L->fim; i++) {
        if (L->itens[i] == valor) {
            printf("%d ", i);
            encontrado = 1;
        }
    }
    if (!encontrado) {
        printf("Nao encontrado na lista.");
    }
    printf("\n");
}

// 6 - ESVAZIAR
void esvaziar(Lista *L) {
    L->fim = 0;
    printf("\nA lista foi esvaziada com sucesso!\n");
}

int main() {
    Lista L;
    criarLista(&L); // a) Cria a lista L
    int opcao;

    do {
        // Exibir o menu de opções
        printf("\n==================================\n");
        printf("         EDITOR DE LISTAS         \n");
        printf("==================================\n");
        printf(" 1 - EXIBIR LISTA\n");
        printf(" 2 - INSERIR\n");
        printf(" 3 - REMOVER\n");
        printf(" 4 - EXIBIR ELEMENTO\n");
        printf(" 5 - EXIBIR POSICAO\n");
        printf(" 6 - ESVAZIAR\n");
        printf(" 0 - SAIR\n");
        printf("==================================\n");
        printf("DIGITE SUA OPCAO: ");
        
        scanf("%d", &opcao);

        switch (opcao) {
            case 1:
                exibirLista(&L);
                break;
            case 2:
                inserir(&L);
                break;
            case 3:
                remover(&L);
                break;
            case 4:
                exibirElemento(&L);
                break;
            case 5:
                exibirPosicao(&L);
                break;
            case 6:
                esvaziar(&L);
                break;
            case 0:
                printf("\nA sair do programa...\n");
                break;
            default:
                printf("\nOpcao invalida! Tente novamente.\n");
        }

        if (opcao != 0) {
            printf("\nPressione Enter para continuar...");
            while (getchar() != '\n'); // Limpa o buffer
            getchar(); // Aguarda o Enter
        }

    } while (opcao != 0);

    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: