SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Estruturas de dados em C++
Lista de inteiros
Por Robson Eduardo
Uma lista é uma estrutura de dados que armazena o seu conteúdo de forma sequencial. Isto é, dada
uma posição é possível que alí haja algum elemento.
No presente trabalho mostramos a implementação de uma lista de inteiros para exemplificar a
implementação desta importante estrutura de dados.
A interface da lista
Uma lista deve, assim como qualquer estrutura de dados, ser capaz de adicionar, remover e
permitir a visualização de seus elementos pelo usuário. Assim criamos a interface pública da
classe. O construtor cria uma lista vazia, as funções insere são capazes de adicionar um valor à
lista em uma determinada posição, se omitida a posição, o elemento é adicionado ao final. A
função retira faz a remoção do que se encontra em uma determinada posição e, por fim, a função
imprime mostra todos os valores constantes na estrutura.
Escolha da implementação
Em C++, uma lista pode ser implementada de diversas maneiras. Provavelmente, a mais simples é
lançando mão de um array de tamanho fixo para armazenar os seus elementos. Por achar esta
forma mais fácil de ser implementada, ela foi escolhida.
class Lista{
public:
Lista();
void insere (int);
void insere (int, int);
int retira (int);
int verifica (int);
void imprime();
...
...
private:
int elementos[100];
int ndElem;
};
Programa de teste
Para testar o funcionamento da classe, criamos um programa que utiliza as funções da estrutura
de forma sistemática para verificarmos se seu funcionamento está dentro dos conformes.
Implementação dos métodos da classe
Construtor
A lista inicia sempre vazia. Não fizemos um construtor de cópias e nem destrutor, já que não
utilizamos alocação dinâmica de memória ou apontadores. Como a lista deve ser povoada durante
o uso, não nos interessa o seu conteúdo durante a construção. Ficamos com o seguinte código:
Função de inserção
Cada vez que um elemento for inserido na última posição da nossa lista, devemos verificar se a
posição é válida, ora pode ser pedido que se adicione um elemento à uma posição que não está
coberta pela lista no momento da inserção. Faremos duas funções distintas para inserção: a com
//testeLista.cpp
#include "Lista.h"
#include <iostream>
using namespace std;
int main(){
Lista l;
l.insere(5);
l.insere(3);
l.insere(9);
l.insere(7);
l.insere(5);
l.imprime();
l.insere(2,2);
l.retira(4);
l.insere(4,4);
l.imprime();
}
Lista::Lista(){
ndElem=0;
}
posição definida e a com posição indefinida. É possível reunir estas duas funções em apenas uma
utilizando um valor default para posição, no entanto, seria difícil distinguir uma chamada sem este
parâmetro de outra em que o parâmetro é informado e coincide com o default. Dessa forma, foi
escolhido por duas implementações distintas.
Função de remoção
Se é necessário colocar novos elementos na lista, é, também, remover o que está nela. Para isso,
usamos uma função que recebe uma posição e, se válida, remove o elemento daquela posição.
Função de exibição
Quando precisamos percorrer a lista verificando seus elementos, podemos usar a seguinte função.
void Lista::insere (int x){
if(ndElem>=100){
throw new exception();
}
else{
elementos[ndElem]=x;
ndElem++;
}
}
void Lista::insere (int x, int pos){
if(ndElem>=100 || pos<=0)
throw new exception ();
int i;
for(i = ndElem; i>=pos; --i)
elementos[i]=elementos[i-1];
elementos[i]=x;
ndElem++;
}
int Lista::verifica (int pos){
if(ndElem<pos || pos<=0)
throw new exception ();
return elementos[pos-1];
}
void Lista::imprime(){
for(int i=0; i<ndElem; ++i)
cout << elementos[i] << ", ";
cout << endl;
}

Más contenido relacionado

La actualidad más candente (16)

Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Aula 21
Aula 21Aula 21
Aula 21
 
Usar explicação
Usar explicaçãoUsar explicação
Usar explicação
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Aula 20
Aula 20Aula 20
Aula 20
 
Usar explicação 0
Usar explicação 0Usar explicação 0
Usar explicação 0
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Aula 22
Aula 22Aula 22
Aula 22
 
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
 
Aula 16
Aula 16Aula 16
Aula 16
 

Destacado

BPS Champions League - Team
BPS Champions League - TeamBPS Champions League - Team
BPS Champions League - TeamMahuya Saha
 
Commercial real-estate-for-beginners
Commercial real-estate-for-beginnersCommercial real-estate-for-beginners
Commercial real-estate-for-beginnersRahmat Taufiq Sigit
 
Gp3 pho-11-1-xfp-cpl-interop-public-20110502
Gp3 pho-11-1-xfp-cpl-interop-public-20110502Gp3 pho-11-1-xfp-cpl-interop-public-20110502
Gp3 pho-11-1-xfp-cpl-interop-public-20110502P Palai
 
بحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسيبحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسيدكتور حاتم مرسى
 
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDS
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDSMANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDS
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDSThe Business Council of Mongolia
 
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...The Executive Connection (TEC)
 
1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service
1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service
1. Effective SERVICE EXCELLENCE Training_Basics of Customer ServiceKanaidi ken
 

Destacado (15)

BPS Champions League - Team
BPS Champions League - TeamBPS Champions League - Team
BPS Champions League - Team
 
Commercial real-estate-for-beginners
Commercial real-estate-for-beginnersCommercial real-estate-for-beginners
Commercial real-estate-for-beginners
 
Gp3 pho-11-1-xfp-cpl-interop-public-20110502
Gp3 pho-11-1-xfp-cpl-interop-public-20110502Gp3 pho-11-1-xfp-cpl-interop-public-20110502
Gp3 pho-11-1-xfp-cpl-interop-public-20110502
 
Modul 2 kb 3 motivasi
Modul 2 kb 3 motivasiModul 2 kb 3 motivasi
Modul 2 kb 3 motivasi
 
بحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسيبحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسي
 
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDS
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDSMANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDS
MANAGING BUSINESS RISKS THROUGH INTRODUCTION OF GLOBAL STANDARDS
 
موضوع5 الأرض والقمر
موضوع5 الأرض والقمرموضوع5 الأرض والقمر
موضوع5 الأرض والقمر
 
HOS Talent management presentation
HOS Talent management presentationHOS Talent management presentation
HOS Talent management presentation
 
Simbol budaya
Simbol budayaSimbol budaya
Simbol budaya
 
jurnal reklamasi 1
jurnal reklamasi 1jurnal reklamasi 1
jurnal reklamasi 1
 
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...
Team Coaching in a Chaotic World - Australian Institute of Management - Keyno...
 
Wine Tourism
Wine TourismWine Tourism
Wine Tourism
 
Wine Tourism
Wine TourismWine Tourism
Wine Tourism
 
Teori tingkah laku
Teori tingkah laku Teori tingkah laku
Teori tingkah laku
 
1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service
1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service
1. Effective SERVICE EXCELLENCE Training_Basics of Customer Service
 

Similar a Lista de inteiros

Similar a Lista de inteiros (20)

Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Top0
Top0Top0
Top0
 
Java 12 Colecoes
Java 12 ColecoesJava 12 Colecoes
Java 12 Colecoes
 
Array list
Array listArray list
Array list
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Java: Composicao e Array List
Java: Composicao e Array ListJava: Composicao e Array List
Java: Composicao e Array List
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Estrutura de Dados
Estrutura de DadosEstrutura de Dados
Estrutura de Dados
 
C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template Library
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle Or
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
 
Grupo2
Grupo2Grupo2
Grupo2
 
Aula 7
Aula 7 Aula 7
Aula 7
 
introdução ao enterprise architect
introdução ao enterprise architectintrodução ao enterprise architect
introdução ao enterprise architect
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 

Lista de inteiros

  • 1. Estruturas de dados em C++ Lista de inteiros Por Robson Eduardo Uma lista é uma estrutura de dados que armazena o seu conteúdo de forma sequencial. Isto é, dada uma posição é possível que alí haja algum elemento. No presente trabalho mostramos a implementação de uma lista de inteiros para exemplificar a implementação desta importante estrutura de dados. A interface da lista Uma lista deve, assim como qualquer estrutura de dados, ser capaz de adicionar, remover e permitir a visualização de seus elementos pelo usuário. Assim criamos a interface pública da classe. O construtor cria uma lista vazia, as funções insere são capazes de adicionar um valor à lista em uma determinada posição, se omitida a posição, o elemento é adicionado ao final. A função retira faz a remoção do que se encontra em uma determinada posição e, por fim, a função imprime mostra todos os valores constantes na estrutura. Escolha da implementação Em C++, uma lista pode ser implementada de diversas maneiras. Provavelmente, a mais simples é lançando mão de um array de tamanho fixo para armazenar os seus elementos. Por achar esta forma mais fácil de ser implementada, ela foi escolhida. class Lista{ public: Lista(); void insere (int); void insere (int, int); int retira (int); int verifica (int); void imprime(); ... ... private: int elementos[100]; int ndElem; };
  • 2. Programa de teste Para testar o funcionamento da classe, criamos um programa que utiliza as funções da estrutura de forma sistemática para verificarmos se seu funcionamento está dentro dos conformes. Implementação dos métodos da classe Construtor A lista inicia sempre vazia. Não fizemos um construtor de cópias e nem destrutor, já que não utilizamos alocação dinâmica de memória ou apontadores. Como a lista deve ser povoada durante o uso, não nos interessa o seu conteúdo durante a construção. Ficamos com o seguinte código: Função de inserção Cada vez que um elemento for inserido na última posição da nossa lista, devemos verificar se a posição é válida, ora pode ser pedido que se adicione um elemento à uma posição que não está coberta pela lista no momento da inserção. Faremos duas funções distintas para inserção: a com //testeLista.cpp #include "Lista.h" #include <iostream> using namespace std; int main(){ Lista l; l.insere(5); l.insere(3); l.insere(9); l.insere(7); l.insere(5); l.imprime(); l.insere(2,2); l.retira(4); l.insere(4,4); l.imprime(); } Lista::Lista(){ ndElem=0; }
  • 3. posição definida e a com posição indefinida. É possível reunir estas duas funções em apenas uma utilizando um valor default para posição, no entanto, seria difícil distinguir uma chamada sem este parâmetro de outra em que o parâmetro é informado e coincide com o default. Dessa forma, foi escolhido por duas implementações distintas. Função de remoção Se é necessário colocar novos elementos na lista, é, também, remover o que está nela. Para isso, usamos uma função que recebe uma posição e, se válida, remove o elemento daquela posição. Função de exibição Quando precisamos percorrer a lista verificando seus elementos, podemos usar a seguinte função. void Lista::insere (int x){ if(ndElem>=100){ throw new exception(); } else{ elementos[ndElem]=x; ndElem++; } } void Lista::insere (int x, int pos){ if(ndElem>=100 || pos<=0) throw new exception (); int i; for(i = ndElem; i>=pos; --i) elementos[i]=elementos[i-1]; elementos[i]=x; ndElem++; } int Lista::verifica (int pos){ if(ndElem<pos || pos<=0) throw new exception (); return elementos[pos-1]; }
  • 4. void Lista::imprime(){ for(int i=0; i<ndElem; ++i) cout << elementos[i] << ", "; cout << endl; }