Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Santiago Lov
on
Santiago Lov
on
* Main.cpp
*
* Created on: 21 de ago. de 2015
Author: santiago
*
/
*
#include "Lista.h"
10
15
20
25
int main(){
Lista Lista1;//Crea la lista vacia
Lista1.AddLast(5);//Agrega un nodo con valor 5 al final de la lista
Lista1.Print();//imprime
Lista1.AddFront(3);//Agrega un nodo con valor 3 al inicio de la lista
Lista1.Print();//imprime
Lista1.AddLast(9);//Agrega un nodo con valor 9 al final de la lista
Lista1.Print();//imprime
Lista1.RemoveFront();//Elimina el primer nodo
Lista1.Print();//imprime
Lista1.AddLast(1);//Agrega un nodo con valor 1 al final de la lista
Lista1.Print();//imprime
Lista1.RemoveLast();//Elimina el ultimo nodo
Lista1.Print();//imprime
return 0;
}//end main
Listing 2: Nodo.h
/*
* Nodo.h
*
* Created on: 21 de ago. de 2015
Author: santiago
*
*/
#ifndef NODO_H_
#define NODO_H_
10
15
20
c l a s s Nodo {
int m_dato;
Nodo * m_psig;
public:
Nodo();//Constructor por defecto
Nodo(int dato);//Contructor con parametro dato
Nodo(Nodo & nodo);//Constuctor copia
Nodo();//Destructor
int getDato() const;//Obtener dato
void setDato(int dato);//Asignar dato
Nodo* getPsig() const;//Obtener puntero a siguiente nodo
Pagina 2 de 7
Santiago Lov
on
#endif /* NODO_H_ */
Listing 3: Nodo.cpp
/*
* Nodo.cpp
*
* Created on: 21 de ago. de 2015
Author: santiago
*
/
*
#include "Nodo.h"
10
15
20
25
30
Nodo::Nodo(int dato) {
m_dato = dato;//Asignar dato a m_dato
m_psig = 0;// Asignar nulo a m_psig
}
35
Nodo::Nodo(Nodo& nodo) {
m_dato = nodo.m_dato;//Asignar m_dato
m_psig = nodo.m_psig;//Asignar m_psig
}
Nodo::Nodo() {
// TODO Auto-generated destructor stub
}
Listing 4: Lista.h
Pagina 3 de 7
Santiago Lov
on
/*
* Lista.h
*
* Created on: 21 de ago. de 2015
Author: santiago
*
/
*
#ifndef LISTA_H_
#define LISTA_H_
10
#include <iostream>
#include "Nodo.h"
using namespace std;
15
20
25
c l a s s Lista {
Nodo * m_phead;
Nodo * m_plast;
public:
Lista();//Constructor por defecto
Lista();
void AddLast(int n);//Agregar nodo al final
void AddFront(int n);//Agregar nodo al inicio
void RemoveLast();//Eliminar ultimo nodo
void RemoveFront();//Eliminar primer nodo
void Print();//Imprimir
};
#endif /* LISTA_H_ */
AddLast:
Pagina 4 de 7
Santiago Lov
on
AddFront:
RemoveLast:
Pagina 5 de 7
Santiago Lov
on
RemoveFront:
Listing 5: Lista.cpp
/*
Pagina 6 de 7
Santiago Lov
on
* Lista.cpp
*
* Created on: 21 de ago. de 2015
Author: santiago
*
/
*
#include "Lista.h"
10
Lista::Lista() {
m_phead = 0;
m_plast = 0;
}
15
Lista::Lista() {
// TODO Auto-generated destructor stub
}
20
25
void Lista::AddLast(int n) {
Nodo * pNuevo = new Nodo(n);//Crea nuevo puntero a nodo
i f (m_phead == 0){//Evalua si la lista esta vacia
//Asigna el nuevo nodo al puntero de inicio y al de fin
m_phead = m_plast = pNuevo;
}else{
//Asigna al m_psig del ultimo nodo la direccion del nuevo nodo
m_plast->setPsig(pNuevo);
m_plast = pNuevo;//Hace que el puntero de fin apunte al nuevo nodo
}
}
30
35
40
45
50
void Lista::AddFront(int n) {
Nodo * pNuevo = new Nodo(n);//Crea un nuevo puntero a nodo
i f (m_phead == 0){//Evalua si la lista esta vacia
//Asigna el nuevo nodo al puntero de inicio y al de fin
m_phead = m_plast = pNuevo;
}else{
//Asigna al m_psig del nuevo nodo la direccion del primer nodo
pNuevo->setPsig(m_phead);
//Hace que el puntero de inicio apunte al nuevo nodo
m_phead = pNuevo;
}
}
void Lista::RemoveLast() {
i f (m_phead == 0 ){//Evalua si la lista esta vaia
cout<<"La lista esta vacia"<<endl;
}else{
//Crea un nuevo puntero a nodo y le asigna el valor del primer nodo
Nodo * pTemp = m_phead;
//Mientras m_psig del nodo temporal sea diferente al ultimo nodo
while(pTemp->getPsig() != m_plast){
//Asigna al nodo temporal el valor del nodo
pTemp = pTemp->getPsig();
}
Pagina 7 de 7
Santiago Lov
on
55
}
60
65
70
75
80
void Lista::RemoveFront() {
//Crea un nuevo nodo y le asigna el valor del primer nodo
Nodo * pTemp = m_phead;
//Hace que el primer nodo sea igual al segundo nodo
m_phead = m_phead->getPsig();
delete pTemp;//Elimina el nodo temporal
}
void Lista::Print() {
//Crea un nuevo nodo y le asigna el valor del primer nodo
Nodo * pTemp = m_phead;
//Mientras el nodo temporal no sea nulo
while(pTemp!= 0 ){
//imprime el valor del nodo temporal
cout<<pTemp->getDato();
//Asigna al nodo temporal el valor del siguiente nodo
pTemp = pTemp->getPsig();
}
cout<<endl;
}
Pagina 8 de 7