SlideShare uma empresa Scribd logo
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;
}

Mais conteúdo relacionado

Mais procurados

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
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
Adriano Teixeira de Souza
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
Jailson Torquato
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
Sérgio Souza Costa
 
Aula 21
Aula 21Aula 21
Usar explicação
Usar explicaçãoUsar explicação
Usar explicação
Ademar Trindade
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
Adriano Teixeira de Souza
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
Jonathan Henrique
 
Aula 20
Aula 20Aula 20
Usar explicação 0
Usar explicação 0Usar explicação 0
Usar explicação 0
Ademar Trindade
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
Adriano Teixeira de Souza
 
Aula 22
Aula 22Aula 22
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)
rdgse
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
Mario Sergio
 
Aula 16
Aula 16Aula 16

Mais procurados (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
 

Destaque

BPS Champions League - Team
BPS Champions League - TeamBPS Champions League - Team
BPS Champions League - Team
Mahuya Saha
 
Commercial real-estate-for-beginners
Commercial real-estate-for-beginnersCommercial real-estate-for-beginners
Commercial real-estate-for-beginners
Rahmat 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-20110502
P Palai
 
Modul 2 kb 3 motivasi
Modul 2 kb 3 motivasiModul 2 kb 3 motivasi
Modul 2 kb 3 motivasi
Uwes Chaeruman
 
بحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسيبحث مهارات التفكير دكتور حاتم محمد مرسي
بحث مهارات التفكير دكتور حاتم محمد مرسي
دكتور حاتم مرسى
 
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
The Business Council of Mongolia
 
موضوع5 الأرض والقمر
موضوع5 الأرض والقمرموضوع5 الأرض والقمر
موضوع5 الأرض والقمر
دكتور حاتم مرسى
 
HOS Talent management presentation
HOS Talent management presentationHOS Talent management presentation
HOS Talent management presentation
Erdo Deshiant Garnaby
 
Simbol budaya
Simbol budayaSimbol budaya
Simbol budaya
Yoga Pratama
 
jurnal reklamasi 1
jurnal reklamasi 1jurnal reklamasi 1
jurnal reklamasi 1
muhamad agus safar
 
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)
 
Wine Tourism
Wine TourismWine Tourism
Wine Tourism
Sheetu Goel
 
Wine Tourism
Wine TourismWine Tourism
Wine Tourism
Victoria Gravenstede
 
Teori tingkah laku
Teori tingkah laku Teori tingkah laku
Teori tingkah laku
zaidinajihah05
 
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
Kanaidi ken
 

Destaque (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
 

Semelhante a Lista de inteiros

Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
Robson Eduardo
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
Ademar Trindade
 
Top0
Top0Top0
Java 12 Colecoes
Java 12 ColecoesJava 12 Colecoes
Java 12 Colecoes
Regis Magalhães
 
Array list
Array listArray list
Array list
Celso Adam
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
Pedro Hübner
 
Java: Composicao e Array List
Java: Composicao e Array ListJava: Composicao e Array List
Java: Composicao e Array List
Arthur Emanuel
 
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
Alvaro Oliveira
 
Estrutura de Dados
Estrutura de DadosEstrutura de Dados
Estrutura de Dados
PauloOliveira186307
 
C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template Library
Duda Dornelles
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
Jailson Torquato
 
Unidade4.1 Oracle Or
Unidade4.1 Oracle OrUnidade4.1 Oracle Or
Unidade4.1 Oracle Or
UFU
 
Material_ Módulo 3_Python I.pptx.pdf - Python
Material_ Módulo 3_Python I.pptx.pdf - PythonMaterial_ Módulo 3_Python I.pptx.pdf - Python
Material_ Módulo 3_Python I.pptx.pdf - Python
LorrayneSilva26
 
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
unifesptk
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
Vinicius Marangoni
 
Grupo2
Grupo2Grupo2
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
Ranieri de Souza
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
Julio Cesar Eiras Melanda
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
Sidney Roberto
 

Semelhante 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
 
Material_ Módulo 3_Python I.pptx.pdf - Python
Material_ Módulo 3_Python I.pptx.pdf - PythonMaterial_ Módulo 3_Python I.pptx.pdf - Python
Material_ Módulo 3_Python I.pptx.pdf - Python
 
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)
 

Último

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (8)

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

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; }