Skip to content

Commit 123c6d7

Browse files
committed
Format code
1 parent e85a216 commit 123c6d7

File tree

1 file changed

+144
-146
lines changed

1 file changed

+144
-146
lines changed

src/go/listasequencialordenada/listaSequencialOrdenada.go

Lines changed: 144 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -4,152 +4,150 @@
44
*
55
* Implementação da lista sequencial cujos elementos estão ordenados
66
*
7-
* link Go PlayGround: https://play.golang.org/p/NWrpCHdFvv8
7+
* link Go PlayGround: https://play.golang.org/p/J6Jbi2_FWJk
88
*/
99

10-
package main
10+
package main
1111

12-
import "fmt"
13-
14-
var maxSize = 50
15-
16-
// Estrura que será guardada em cada posição da lista
17-
type Registro struct {
18-
valor int
19-
// Outros campos podem ser adicionados aqui
20-
}
21-
22-
// Estrutura que guarda um arranjo de Registro, e o número de elementos no arranjo
23-
type Lista struct {
24-
arranjoRegistros []Registro
25-
numeroElementos int
26-
}
27-
28-
// Cria uma nova lista
29-
func criarLista() Lista {
30-
lista := Lista{
31-
arranjoRegistros: make([]Registro, maxSize),
32-
numeroElementos: 0,
33-
}
34-
35-
return lista
36-
}
37-
38-
// reseta o contador de elementos da lista
39-
func inicializar(lista *Lista) {
40-
lista.numeroElementos = 0
41-
}
42-
43-
// Recupera a quantidade de elementos da lista
44-
func tamanho(lista *Lista) int {
45-
return lista.numeroElementos
46-
}
47-
48-
// Imprime valores dos elementos na lista
49-
func imprimir(lista *Lista) {
50-
for i := 0; i < lista.numeroElementos; i++ {
51-
fmt.Printf("%v ", lista.arranjoRegistros[i].valor)
52-
}
53-
fmt.Println()
54-
}
55-
56-
// Realiza busca binária na lista
57-
func buscaBinaria(lista *Lista, valor int) int {
58-
esquerda := 0
59-
direita := lista.numeroElementos - 1
60-
61-
for esquerda <= direita {
62-
meio := ((esquerda + direita) / 2)
63-
if lista.arranjoRegistros[meio].valor == valor {
64-
return meio
65-
} else {
66-
if lista.arranjoRegistros[meio].valor < valor {
67-
esquerda = meio + 1
68-
} else {
69-
direita = meio - 1
70-
}
71-
}
72-
}
73-
74-
return -1
75-
}
76-
77-
// Insere elementos na lista em ordem crescente, garantindo com a lista esteja sempre ordenada
78-
func insereRegistroOrdenado(lista *Lista, registro Registro) bool {
79-
if lista.numeroElementos == maxSize {
80-
return false
81-
}
82-
83-
posicao := lista.numeroElementos
84-
85-
for posicao > 0 && lista.arranjoRegistros[posicao-1].valor > registro.valor {
86-
lista.arranjoRegistros[posicao] = lista.arranjoRegistros[posicao-1]
87-
posicao--
88-
}
89-
90-
lista.arranjoRegistros[posicao] = registro
91-
lista.numeroElementos++
92-
93-
return true
94-
}
95-
96-
// Exclui um elemento da lista
97-
func excluirElemento(lista *Lista, valor int) bool {
98-
posicao := buscaBinaria(lista, valor)
99-
100-
if posicao == -1 {
101-
return false
102-
}
103-
104-
for i := posicao; i < lista.numeroElementos-1; i++ {
105-
lista.arranjoRegistros[i] = lista.arranjoRegistros[i+1]
106-
}
107-
108-
lista.numeroElementos--
109-
110-
return true
111-
}
112-
113-
func main() {
114-
lista := criarLista()
115-
116-
inicializar(&lista)
117-
118-
fmt.Println("Inserindo valores na lista...")
119-
insereRegistroOrdenado(&lista, Registro{valor: 20})
120-
insereRegistroOrdenado(&lista, Registro{valor: 10})
121-
insereRegistroOrdenado(&lista, Registro{valor: 70})
122-
insereRegistroOrdenado(&lista, Registro{valor: 30})
123-
insereRegistroOrdenado(&lista, Registro{valor: 60})
124-
insereRegistroOrdenado(&lista, Registro{valor: 90})
125-
insereRegistroOrdenado(&lista, Registro{valor: 80})
126-
insereRegistroOrdenado(&lista, Registro{valor: 15})
127-
insereRegistroOrdenado(&lista, Registro{valor: 1})
128-
129-
fmt.Println()
130-
fmt.Println("Imprimindo lista...")
131-
imprimir(&lista)
132-
fmt.Println("Tamanho da lista:", tamanho(&lista))
133-
134-
fmt.Println()
135-
136-
fmt.Println("Excluindo elemento 80 da lista...")
137-
excluirElemento(&lista, 80)
138-
139-
fmt.Println()
140-
fmt.Println("Imprimindo lista...")
141-
imprimir(&lista)
142-
fmt.Println("Tamanho da lista:", tamanho(&lista))
143-
144-
145-
fmt.Println()
146-
fmt.Println("Buscando valores na lista:")
147-
fmt.Println()
148-
149-
fmt.Println("Buscando posição do numero 15:")
150-
fmt.Printf("Posição do número 15: %v \n\n", buscaBinaria(&lista, 15))
151-
152-
fmt.Println("Buscando posição do valor 100:")
153-
fmt.Printf("Posição do número 100: %v \n\n", buscaBinaria(&lista, 100))
154-
}
155-
12+
import "fmt"
13+
14+
var maxSize = 50
15+
16+
// Estrura que será guardada em cada posição da lista
17+
type Registro struct {
18+
valor int
19+
// Outros campos podem ser adicionados aqui
20+
}
21+
22+
// Estrutura que guarda um arranjo de Registro, e o número de elementos no arranjo
23+
type Lista struct {
24+
arranjoRegistros []Registro
25+
numeroElementos int
26+
}
27+
28+
// Cria uma nova lista
29+
func criarLista() Lista {
30+
lista := Lista{
31+
arranjoRegistros: make([]Registro, maxSize),
32+
numeroElementos: 0,
33+
}
34+
35+
return lista
36+
}
37+
38+
// reseta o contador de elementos da lista
39+
func inicializar(lista *Lista) {
40+
lista.numeroElementos = 0
41+
}
42+
43+
// Recupera a quantidade de elementos da lista
44+
func tamanho(lista *Lista) int {
45+
return lista.numeroElementos
46+
}
47+
48+
// Imprime valores dos elementos na lista
49+
func imprimir(lista *Lista) {
50+
for i := 0; i < lista.numeroElementos; i++ {
51+
fmt.Printf("%v ", lista.arranjoRegistros[i].valor)
52+
}
53+
fmt.Println()
54+
}
55+
56+
// Realiza busca binária na lista
57+
func buscaBinaria(lista *Lista, valor int) int {
58+
esquerda := 0
59+
direita := lista.numeroElementos - 1
60+
61+
for esquerda <= direita {
62+
meio := ((esquerda + direita) / 2)
63+
if lista.arranjoRegistros[meio].valor == valor {
64+
return meio
65+
} else {
66+
if lista.arranjoRegistros[meio].valor < valor {
67+
esquerda = meio + 1
68+
} else {
69+
direita = meio - 1
70+
}
71+
}
72+
}
73+
74+
return -1
75+
}
76+
77+
// Insere elementos na lista em ordem crescente, garantindo com a lista esteja sempre ordenada
78+
func insereRegistroOrdenado(lista *Lista, registro Registro) bool {
79+
if lista.numeroElementos == maxSize {
80+
return false
81+
}
82+
83+
posicao := lista.numeroElementos
84+
85+
for posicao > 0 && lista.arranjoRegistros[posicao-1].valor > registro.valor {
86+
lista.arranjoRegistros[posicao] = lista.arranjoRegistros[posicao-1]
87+
posicao--
88+
}
89+
90+
lista.arranjoRegistros[posicao] = registro
91+
lista.numeroElementos++
92+
93+
return true
94+
}
95+
96+
// Exclui um elemento da lista
97+
func excluirElemento(lista *Lista, valor int) bool {
98+
posicao := buscaBinaria(lista, valor)
99+
100+
if posicao == -1 {
101+
return false
102+
}
103+
104+
for i := posicao; i < lista.numeroElementos-1; i++ {
105+
lista.arranjoRegistros[i] = lista.arranjoRegistros[i+1]
106+
}
107+
108+
lista.numeroElementos--
109+
110+
return true
111+
}
112+
113+
func main() {
114+
lista := criarLista()
115+
116+
inicializar(&lista)
117+
118+
fmt.Println("Inserindo valores na lista...")
119+
insereRegistroOrdenado(&lista, Registro{valor: 20})
120+
insereRegistroOrdenado(&lista, Registro{valor: 10})
121+
insereRegistroOrdenado(&lista, Registro{valor: 70})
122+
insereRegistroOrdenado(&lista, Registro{valor: 30})
123+
insereRegistroOrdenado(&lista, Registro{valor: 60})
124+
insereRegistroOrdenado(&lista, Registro{valor: 90})
125+
insereRegistroOrdenado(&lista, Registro{valor: 80})
126+
insereRegistroOrdenado(&lista, Registro{valor: 15})
127+
insereRegistroOrdenado(&lista, Registro{valor: 1})
128+
129+
fmt.Println()
130+
fmt.Println("Imprimindo lista...")
131+
imprimir(&lista)
132+
fmt.Println("Tamanho da lista:", tamanho(&lista))
133+
134+
fmt.Println()
135+
136+
fmt.Println("Excluindo elemento 80 da lista...")
137+
excluirElemento(&lista, 80)
138+
139+
fmt.Println()
140+
fmt.Println("Imprimindo lista...")
141+
imprimir(&lista)
142+
fmt.Println("Tamanho da lista:", tamanho(&lista))
143+
144+
fmt.Println()
145+
fmt.Println("Buscando valores na lista:")
146+
fmt.Println()
147+
148+
fmt.Println("Buscando posição do numero 15:")
149+
fmt.Printf("Posição do número 15: %v \n\n", buscaBinaria(&lista, 15))
150+
151+
fmt.Println("Buscando posição do valor 100:")
152+
fmt.Printf("Posição do número 100: %v \n\n", buscaBinaria(&lista, 100))
153+
}

0 commit comments

Comments
 (0)