-
Notifications
You must be signed in to change notification settings - Fork 0
/
PilhaVetor
123 lines (106 loc) · 2.31 KB
/
PilhaVetor
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package Pilha;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class PilhaVetor<T> implements IPilha<T> {
private T[] elementos; // como instanciar: (T[]) new Object[tamVetor]
int topo; // contador de elementos
@Override
public T top() {
return elementos[topo - 1];
}
@Override
public void limpar() {
this.topo = 0;
}
@Override
public int tamanho() {
return this.topo;
}
@Override
public boolean estaVazia() {
if (this.topo == 0) {
return true;
} else {
return false;
}
}
@Override
public boolean contem(T elemento) {
for (int i = 0; i < tamanho(); i++) {
if (elementos[i].equals(elemento)) {
return true;
}
}
return false;
}
@Override
public int distancia(T elemento) {
for (int i = 0; i < tamanho(); i++) {
if (elementos[i].equals(elemento)) {
return this.topo - (i - 1);
}
}
return -1;
}
@Override
public T desempilhar() {
if (this.topo != 0) {
this.topo--;
return this.elementos[this.topo + 1];
}
return null;
}
@Override
public void empilhar(T elemento) {
elementos[this.topo] = elemento;
this.topo++;
}
public String toString2() {
/* Quando o contElementos foi 0, ele imprime "[]" */
if (this.topo == 0) {
return "[]";
}
/*
* Construindo uma String usando manipulação de String através do
* StringBuilder
*/
StringBuilder manipulador = new StringBuilder();
manipulador.append("[");
/*
* Percorre o vetor e adciona a vírgula na frente do elemento. Lembrando
* que o último elemento não pode ser incluído
*/
for (int i = 0; i < this.topo - 1; i++) {
manipulador.append(elementos[i]);
manipulador.append(",");
}
/*
* Finaliza a String adcionando o ultimo elemento que não foi adcionado
* no for e fecha o colchete.
*/
manipulador.append(elementos[this.topo - 1]);
manipulador.append("]");
return manipulador.toString();
}
private Iterator<T> myIterator = new Iterator<T>() {
private int posicao = 0;
@Override
public boolean hasNext() {
if (posicao < topo) {
return true;
} else {
return false;
}
}
@Override
public T next() throws NoSuchElementException {
if (!hasNext()) {
throw new NoSuchElementException();
} else {
T elemento = elementos[posicao];
posicao++;
return elemento;
}
}
};
}