-
Notifications
You must be signed in to change notification settings - Fork 0
/
ListaCircular.java
122 lines (103 loc) · 2.99 KB
/
ListaCircular.java
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
public class ListaCircular {
private Celula inicio;
private Celula fim;
private int numDeElementos;
private void insereInicio(Object info){
Celula nova = new Celula(this.inicio, info);
this.inicio = nova;
if (this.numDeElementos == 0){
this.fim = nova;
}
else {
this.fim.setProx(nova);
}
this.numDeElementos++;
}
private void insereFinal(Object info){
Celula nova = new Celula(this.inicio,info);
this.fim.setProx(nova);
this.fim = nova;
this.numDeElementos++;
}
private void retiraInicio(){
if (this.numDeElementos == 1){
this.inicio = null;
this.fim = null;
}
else {
this.inicio = this.inicio.getProx();
}
this.numDeElementos--;
}
private void retiraFim(){
if (this.numDeElementos == 1){
this.retiraInicio();
}
else {
Celula ant = this.SEARCH(this.numDeElementos - 1);
ant.setProx(this.inicio);
this.fim = ant;
this.numDeElementos--;
}
}
public Celula SEARCH(int pos){
if (pos < 0){
pos = 0;
}
else if (pos > this.numDeElementos){
pos = this.numDeElementos;
}
Celula atual = this.inicio;
for (int i = 0; i < pos ; i++){
atual = atual.getProx();
}
return atual;
}
public void INSERT(Object info, int pos){
if (this.numDeElementos == 0){
this.insereInicio(info);
}
else if (pos <= 0){
this.insereInicio(info);
}
else if (pos >= this.numDeElementos){
this.insereFinal(info);
}
else{
Celula anterior = this.SEARCH(pos - 1);
Celula nova = new Celula(anterior.getProx(), info);
anterior.setProx(nova);
this.numDeElementos++;
}
}
public void DELETE(int pos){
if (this.numDeElementos == 0){
System.out.println("A Lista está vazia");
}
else if (pos <= 0){
this.retiraInicio();
}
else if(pos >= this.numDeElementos){
this.retiraFim();
}
else{
Celula atual = this.SEARCH(pos);
Celula anterior = this.SEARCH(pos - 1);
anterior.setProx(atual.getProx());
this.numDeElementos--;
}
}
public void imprimeLista(){
if (this.numDeElementos == 0){
System.out.println("A lista está vazia");
}
else{
Celula atual = this.inicio;
for (int i = 0; i < this.numDeElementos ; ++i){
System.out.print(atual.getInfo());
System.out.printf("\n");
atual = atual.getProx();
}
}
}
}