#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;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: