Listas Lineares
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estrutura de dados e algoritimos :: Estudo
Página 1 de 1
Listas Lineares
Implementar
Resolução:
Versão Dev-C++:
- Código:
#include <iostream>
#include <string.h>
using namespace std;
const int N = 5; // máximo de elementos (nós)
struct tNo{
int chave;
char nome[30];
char endereco[100];
};
tNo L[N]; // Lista de nós
int k=0; //número de elementos inseridos na lista
- A função main contendo o seguite menu:
1- Inserir um elemento na lista
2- Remover um elemento da lista
3- Sair
- Utilize a função insere.
- Código:
int insere (tNo y, tNo L[N], int &k)
{
if (k < N)
{
if(busca(L, k, y.chave) == -1) // não encontrou
{
L[k] = y;
k++;
return 1; // sucesso na inserção
}
return -1; // Elemento existente!
}
else
return 0; // overflow: limite máximo alcançado
}
- Utilize a função busca.
- Código:
int busca( tNo L[N], int k, int x)
{
int i=0;
while ( i < k )
if (L[i].chave == x)
return i; // retorna o índice
else
i++;
return -1; // não encontrou
}
- Utilze a função de remoção.
- Código:
int remove(tNo y, tNo L[N], int &k)
{
int j, pos;
if (k == 0) // underflow: lista vazia
return 0;
pos = busca(L, k, y.chave);
if (pos == -1) // não encontrou a chave
return -1;
for (j=pos; j < k-1; j++)
vet[j] = vet[j+1];
k--; // decrementa a quantidade de elementos
return 1; /
Resolução:
- Código:
#include <iostream>
#include <string.h>
using namespace std;
const int N = 5; // máximo de elementos (nós)
struct tNo{
int chave;
char nome[30];
char endereco[100];
};
tNo L[N]; // Lista de nós
int k=0; //número de elementos inseridos na lista
int menu();
int insere (tNo y, tNo L[N], int &k);
int remove(tNo y, tNo L[N], int &k);
int busca( tNo L[N], int k, int x);
void main()
{
int op;
do{
op=menu();
if(op == 1)
{
insere (y, L, k);
}
else
{
remove(y, L, k);
}
}while(op != 3);
}
int menu()
{
int op;
do{
system("cls");
cout<< "============================================\n";
cout<< "\t1- Inserir um elemento na lista\n";
cout<< "\t2- Remover um elemento da lista\n";
cout<< "\t3- Sair\n";
cout<< "============================================\n";
cout<< "\n\tDigite a opcao desejada.\n\t";
cin>> op;
if(op < 1 || op > 3)
{
system("cls");
cout<< "Opcao invalida digite novamente.\n";
system("pause");
}
}while(op < 1 || op > 3);
return op;
}
int insere (tNo y, tNo L[N], int &k)
{
if (k < N)
{
if(busca(L, k, y.chave) == -1) // não encontrou
{
L[k] = y;
k++;
return 1; // sucesso na inserção
}
return -1; // Elemento existente!
}
else
return 0; // overflow: limite máximo alcançado
}
int remove(tNo y, tNo L[N], int &k)
{
int j, pos;
if (k == 0) // underflow: lista vazia
return 0;
pos = busca(L, k, y.chave);
if (pos == -1) // não encontrou a chave
return -1;
for (j=pos; j < k-1; j++)
vet[j] = vet[j+1];
k--; // decrementa a quantidade de elementos
return 1; // sucesso na remoção
}
int busca( tNo L[N], int k, int x)
{
int i=0;
while ( i < k )
if (L[i].chave == x)
return i; // retorna o índice
else
i++;
return -1; // não encontrou
}
Versão Dev-C++:
- Código:
#include <iostream>
#include <string.h>
using namespace std;
const int N = 5; // máximo de elementos (nós)
struct tNo{
int chave;
char nome[30];
char endereco[100];
};
tNo L[N]; // Lista de nós
int k=0; //número de elementos inseridos na lista
int menu();
int insere (tNo y, tNo L[N], int &k);
int remove(tNo y, tNo L[N], int &k);
int busca( tNo L[N], int k, int x);
int main()
{
int op;
tNo y;
do{
op=menu();
if(op == 1)
{
insere (y, L, k);
}
else
if(op == 2)
{
remove(y, L, k);
}
}while(op != 3);
return EXIT_SUCCESS;
}
int menu()
{
int op;
do{
system("cls");
cout<< "============================================\n";
cout<< "\t1- Inserir um elemento na lista\n";
cout<< "\t2- Remover um elemento da lista\n";
cout<< "\t3- Sair\n";
cout<< "============================================\n";
cout<< "\n\tDigite a opcao desejada.\n\t";
cin>> op;
if(op < 1 || op > 3)
{
system("cls");
cout<< "Opcao invalida digite novamente.\n";
system("pause");
}
}while(op < 1 || op > 3);
return op;
}
int insere (tNo y, tNo L[N], int &k)
{
if (k < N)
{
if(busca(L, k, y.chave) == -1) // não encontrou
{
L[k] = y;
k++;
return 1; // sucesso na inserção
}
return -1; // Elemento existente!
}
else
return 0; // overflow: limite máximo alcançado
}
int remove(tNo y, tNo L[N], int &k)
{
int j, pos, vet[N];
if (k == 0) // underflow: lista vazia
return 0;
pos = busca(L, k, y.chave);
if (pos == -1) // não encontrou a chave
return -1;
for (j=pos; j < k-1; j++)
vet[j] = vet[j+1];
k--; // decrementa a quantidade de elementos
return 1; // sucesso na remoção
}
int busca( tNo L[N], int k, int x)
{
int i=0;
while ( i < k )
if (L[i].chave == x)
return i; // retorna o índice
else
i++;
return -1; // não encontrou
}
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estrutura de dados e algoritimos :: Estudo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos