-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlista.cpp
65 lines (52 loc) · 1.19 KB
/
lista.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "lista.h"
#include <iostream>
//constructor
Lista::Lista(){
primero=0;
longitud=0;
}
//destructor
Lista::~Lista(){
while (longitud>0)
borrar(1);
}
void Lista::insertar(Tipo e , unsigned pos){
Nodo* nuevo = new Nodo(e);
if (pos==1){
nuevo->asignarSiguiente(primero);
primero = nuevo;
}
else{
Nodo* anterior = obtenerNodo(pos - 1);
nuevo -> asignarSiguiente(anterior -> obtenerSiguiente());
anterior -> asignarSiguiente(nuevo);
}
longitud++;
}
bool Lista::listaVacia(){
return (longitud==0);
}
void Lista::borrar (unsigned pos){
Nodo* borrar=primero;
if(pos==1){
primero=borrar->obtenerSiguiente();
}
else{
Nodo* anterior=obtenerNodo(pos-1);
borrar=anterior->obtenerSiguiente();
anterior->asignarSiguiente(borrar->obtenerSiguiente());
}
delete borrar;
longitud--;
}
Tipo Lista::consultar(unsigned pos){
Nodo* aux=obtenerNodo(pos);
return aux->obtenerDato();
}
Nodo* Lista::obtenerNodo(unsigned pos){
Nodo* aux=primero;
for(unsigned i=1; i < pos; i++){
aux = aux -> obtenerSiguiente();
}
return aux;
}