1) Faça um programa em C, que: a) crie uma lista sequencial do tipo t_lista com 50 elementos; B) exiba o seguinte menu de opções: EDITOR DE LISTAS 1 – EXIBIR LISTA 2 – INSERIR PELA POSICAO 3 – REMOVER PELA POSICAO 4 – EXIBIR ELEMENTO 5 – EXIBIR POSIÇÃO 6 – ESVAZIAR 7 – SAIR DIGITE SUA OPÇÃO: c) leia a opção do usuário; d) execute a opção escolhida pelo usuário; e) implemente a estrutura de dados lista, com implementação sequencial e utilizando como o elemento uma outra estrutura contendo dados simples, como números ou nomes. A lista deve conter apenas as operações básicas de listas (criar, isVazia, isCheia, tamanho, getElemento, getPosicao, inserir, remover); f) na opção de exibir lista, devem ser exibidos o tamanho da lista e os seus elementos; g) na opção de inserção, deve ser lido o valor do elemento a ser inserido e a posição onde será efetuada a inserção; h) na opção de remoção, deve ser lido a posição do elemento a ser removido; i) na opção de exibir elemento, deve ser lido a posição do elemento; j) na opção de exibir posição, deve ser lido o valor do elemento; k) as operações de exibir e esvaziar a lista devem estar inseridas no programa principal; l) após a execução de cada opção, o programa deve retornar ao menu para nova opção do usuário ou o encerramento do programa. O código que eu escrevi está parte feito, mas não sei mais o que está faltando. O código que eu fiz foi esse: #include <stdio.h> #include <stdlib.h> // tamanho máximo da lista #define MAX 10 // Tipo base dos elementos da lista typedef struct elementos { char nome[50]; char tel[50]; struct elementos *ptr; int x; } t_elemento; // Estrutura da lista typedef struct { t_elemento vetor[MAX]; // vetor que contém a lista int n; // posição do ultimo elemento da lista } t_lista; // tipo lista t_lista * criar() { t_lista * lista = (t_lista*) malloc(sizeof(t_lista)); if (lista) lista->n = -1; return lista; } void isVazia(t_lista * lista) { int isVazia(t_lista * lista) { return (lista->n == -1); } } int isCheia(t_lista * lista) { return (lista->n == MAX-1); } int tamanho(t_lista * lista) { return lista->n + 1; } t_elemento * geElemento(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida. Caso contrário, retorna o elemento // verifica se pos é valida if ( (pos > lista->n) || (pos < 0) ) return 0; return &(lista->vetor[pos]); } int compara(t_elemento * dado1, t_elemento * dado2) { if (dado1->x == dado2->x) { return 1; } return 0; } int getPosicao(t_lista * lista, t_elemento * dado) { // Retorna a posição do elemento, ou 0 caso não seja encontrado int i; for (i=0; i<=lista->n; i++) if (compara(&(lista->vetor), dado)) return i; return 0; } // desloca os elementos da lista para a direita a partir de pos int deslocaDireita(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 int i; if (pos > lista->n) return 0; for (i=lista->n + 1; i>pos; i--) lista->vetor = lista->vetor[i-1]; return 1; } // desloca os elementos da lista para a esquerda a partir de pos int deslocaEsquerda(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 int i; if (pos > lista->n) return 0; for (i=pos; i<=(lista->n); i++) lista->vetor = lista->vetor[i+1]; return 1; } void inserir(t_lista * lista, int pos, t_elemento * dado) { int inserir (t_lista * lista, int pos, t_elemento * dado) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 if ( isCheia(lista) || (pos > lista->n + 1) ) return 0; deslocaDireita(lista, pos); lista->vetor[pos] = *dado; (lista->n)++; return 1; } } int remover (t_lista *lista, int pos) { // O parâmetro dado irá receber o elemento encontrado // Retorna 0 se a posição for inválida. Caso contrário, retorna 1 if ( (pos > lista->n) || (pos < 0) ) return 0; deslocaEsquerda(lista, pos); (lista->n)--; return 1; } int main () { // programa principal int opcao; t_lista * lista; printf("EDITOR DE LISTAS\n"); printf("1- EXIBIR LISTA\n"); printf("2- INSERIR PELA POSICAO\n"); printf("3- REMOVER PELA POSICAO\n"); printf("4- EXIBIR ELEMENTO\n"); printf("5- EXIBIR POSIÇÃO\n"); printf("6- ESVAZIAR\n"); printf("7- SAIR\n"); printf("DIGITE SUA OPÇÃO:\n"); scanf("%d", &opcao); inserir(lista); remover(lista); getchar; getchar; } Por favor me ajudem não sei mais o que eu posso fazer.