Prévia do material em texto
ESTRUTURA DE DADOS I
ATIVIDADES DA AULA 06
Faça um programa na linguagem C/C++ que implemente uma Lista por meio de um vetor de inteiros, de tamanho n, alocado dinamicamente. A implementação deverá contemplar as operações de busca, inserção e remoção de elementos na lista. Para isso, o programa deverá apresentar um menu para que o usuário possa escolher a operação desejada. Após cada operação realizada a Lista deverá ser apresentada na tela.
#include <iostream>
using namespace std;
int MAXTAM;
int *Lista;
int preenchidos = 0;
int Frente, Tras;
int busca(int bus){
int i = 0;
while( i < MAXTAM){
if(Lista[i] == bus){
return i;
}
i++;
}
return -1;
}
void insere(int x){
if(preenchidos < MAXTAM){
if(busca(x) == -1){
for(int i=0; i<MAXTAM; i++){
if (busca(x) == -1){
Lista[preenchidos] = x;
preenchidos = preenchidos + 1;
}
}
}else{
cout<< "Elemento já existe "<< endl;
}
}else{
cout<< "Overflow" << endl;
}
}
void remover(int x){
int indice, valorRecuperado;
if (preenchidos != 0){
indice = busca(x);
if(indice != -1){
valorRecuperado = Lista[indice];
for(int i = indice; i< preenchidos; i++){
Lista[i] = Lista[i+1];
}
preenchidos = preenchidos - 1;
}else{
cout << "Elemento não existe! "<<endl;
}
}else{
cout << "Underflow" << endl;
}
}
int main(){
int opcao, bus, num, x;
cout << "Informe o tamanho do vetor: "<< endl;
cin >> MAXTAM;
Lista = new int[MAXTAM];
for(int i = 0; i < MAXTAM; i++){
cout << "Informe o indice " << i << " do vetor : "<< endl;
cin >> Lista[i];
preenchidos = preenchidos + 1;
}
do{
cout << "MENU DE OPCAO: " << endl;
cout << "--------------------------------" << endl;
cout << "PARA BUSCA: 1" << endl;
cout << "PARA INSERCAO: 2" << endl;
cout << "PARA REMOCAO: 3" << endl;
cout << "PARA SAIR: 0" << endl;
cout << "--------------------------------" << endl<< endl;
cin >> opcao;
switch(opcao){
case 1:
cout << "Qual numero voce deseja buscar: "<< endl;
cin >> bus;
if(busca(bus) == -1){
cout << "Esse numero nao esta na lista: "<< endl;
}else{
cout << "Numero buscado esta no indice " <<busca(bus) << endl;
}
break;
case 2:
cout << "Qual numero voce deseja inserir: "<< endl;
cin >> num;
insere(num);
break;
case 3:
cout << "Qual numero voce deseja remover: "<< endl;
cin >> x;
remover(x);
break;
}
for(int i = 0; i < MAXTAM; i++){
cout << Lista[i]<< " ";
}
cout<< endl<<endl;
}while(opcao != 0);
delete[] Lista;
return 0;
}