-
Notifications
You must be signed in to change notification settings - Fork 0
/
BeccaLista
137 lines (117 loc) · 2.92 KB
/
BeccaLista
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
public class Lista {
private static Node head;
private static Node aux;/* Serve para pecorrer a lista */
public Lista() {
// inicio = new Node(info);
}
public static void addElement(int numero) {
if (head == null) {/* caso a lista não esteja criada */
head = new Node(numero);
} else {/* vai da sequencia ao resto da sequencia */
aux = head;
if (aux.getInfo() > numero) {
Node aux2 = new Node(
numero);/*
* foi criado um aux temporario para armazenar o
* resto da lista
*/
aux2.setNext(aux);
head = aux2;
} else if (aux.getInfo() < numero) {
while (aux.getNext() != null) {
if (aux.getNext().getInfo() < numero)
aux = aux.getNext();
else
break;
}
Node aux2 = aux.getNext();
aux.setNext(new Node(numero));
aux = aux.getNext();
aux.setNext(aux2);
} else {
System.out.println("Números iguais, não adiciona");
// TODO
}
}
}
public static void printList() { // TODO add exception
if (head == null) { // Verifica se a lista esta vazia
System.out.println("Lista vazia");
// TODO Exceção
} else {
aux = head; /* Aponta o auxiliar para o inicio da lista */
while (aux != null) {
System.out.print(
aux.getInfo() + " "); /* Imprimi a info do auxiliar */
aux = aux.getNext();/* Aponta o auxiliar para o proximo node */
}
}
}
public static void delete(int numero) { // Deleta um node
int position = searchElementPosition(numero, head);
if (position == 0) {
head = head.getNext();
} else {
aux = head;
while (aux.getNext().getInfo() != numero) {
aux = aux.getNext();
}
aux.setNext(aux.getNext().getNext());
}
}
public static void cleanList() {
if (head == null) {
System.out.println("Lista já está vazia");
// TODO Exceção
} else {
head = null;
}
}
public static void searchElement(int numero) {
aux = head;
while (aux != null && numero != aux.getInfo()) {
aux = aux.getNext();
}
if (aux == null) {
System.out.println("Esse número não se encontra na lista!");
} else {
System.out.println("O numero esta na lista!");
}
}
public static int getElement(int numero) {
int retorno = 0;
if (numero == 0) {
retorno = head.getInfo();
} else {
int contador = 0;
head = aux;
while (contador < numero) {
if (aux == null) {
System.out.println("Posição invalida!");
break;
} else {
contador++;
aux = aux.getNext();
}
}
retorno = aux.getInfo();
}
return retorno;
}
private static int searchElementPosition(int numero, Node no) {
if (no == null) {
if (no.getInfo() == numero) {
return 0;
} else {
return 1 + searchElementPosition(numero, no.getNext());
}
} else {
throw new RuntimeException();
}
}
@Override
public String toString() {
return "Lista [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
+ "]";
}
}