Sei sulla pagina 1di 8

Estructura de Datos y Algoritmos: Tarea #1

Lunes, Agosto 24, 2015

Santiago Lov
on

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea #1

Lista enlazada simple


Listing 1: Main.cpp
/*

* 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

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 2 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)

void setPsig( Nodo* psig);//Asignar puntero a siguiente nodo


};
25

#endif /* NODO_H_ */

Listing 3: Nodo.cpp
/*

* Nodo.cpp
*
* Created on: 21 de ago. de 2015
Author: santiago
*
/
*
#include "Nodo.h"

10

15

20

Nodo::Nodo() { // Constructor por defecto


m_dato = 0;// Asignar nulo a m_dato
m_psig = 0;// Asignar nulo a m_psig
}
int Nodo::getDato() const {
return m_dato;//retornar m_dato
}
void Nodo::setDato(int dato) {
m_dato = dato;//asignar m_dato
}

25

Nodo* Nodo::getPsig() const {


return m_psig;//retornar m_psig
}

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
}

de nodo a m_dato local


de nodo a m_psig local

void Nodo::setPsig( Nodo* psig) {


m_psig = psig;//Asignar psig a m_psig
}
40

Nodo::Nodo() {
// TODO Auto-generated destructor stub
}

Listing 4: Lista.h

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 3 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)

/*

* 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:

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 4 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)

AddFront:

RemoveLast:

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 5 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)

RemoveFront:

Listing 5: Lista.cpp
/*

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 6 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)

* 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();
}

Lista enlazada simple Continua en la siguiente pagina. . .

Pagina 7 de 7

Santiago Lov
on

Estructura de Datos y Algoritmos ( ): Tarea


Lista
#1 enlazada simple (continued)
delete pTemp->getPsig();//Elimina el ultimo nodo
pTemp->setPsig(0);//Limpia m_psig del nodo temporal
m_plast = pTemp;//Asigna el nodo temporal como ultimo nodo

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

Potrebbero piacerti anche