Skip to content

Commit 7dfbcfa

Browse files
authored
Merge pull request #69 from heitor582/main
[rust] Adiciona estrutura de dados fila.rs
2 parents 33347bf + 890a734 commit 7dfbcfa

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
3535
| [Árvore Binária][4] | C/C++ | Java | [Python](./src/python/binary_tree.py) | Go | Ruby | JS | Pascal | Swift | Rust |
3636
| [Árvore Binária de Busca][3] | [C/C++](./src/c/ArvoreBinariaDeBusca.c) | [Java](./src/java/ArvoreDeBuscaBinaria.java) | [Python](./src/python/arvore_binaria_de_busca.py) | Go | Ruby | [JS](./src/javascript/ArvoreDeBuscaBinaria.js) | Pascal | Swift | Rust |
3737
| [Deque][54] | C/C++ | Java | Python | Go | Ruby | [JS](./src/javascript/Deque.js) | Pascal | Swift | [Rust](./src/rust/deque.rs) |
38-
| [Fila][18] | [C/C++](./src/c/Fila.c) | [Java](./src/java/Fila.java) | [Python](./src/python/fila.py) | Go | [Ruby](./src/ruby/Fila.rb) | [JS](./src/javascript/Fila.js) | Pascal | Swift | Rust |
38+
| [Fila][18] | [C/C++](./src/c/Fila.c) | [Java](./src/java/Fila.java) | [Python](./src/python/fila.py) | Go | [Ruby](./src/ruby/Fila.rb) | [JS](./src/javascript/Fila.js) | Pascal | Swift | [Rust](./src/rust/fila.rs) |
3939
| [Fila Encadeada Dinâmica][19] | [C/C++](./src/c/FilaEncadeadaDinamica.c) | Java | Python | Go | Ruby | JS | Pascal | Swift | Rust |
4040
| [Grafo][20] | [C/C++](./src/c/Grafos.c) | Java | Python | Go | Ruby | JS | Pascal | Swift | Rust |
4141
| [Lista Circular Ligada][52] | [C/C++](./src/c/ListaCircularLigada.c) | Java | [Python](./src/python/lista_encadeada_circular.py) | Go | Ruby | JS | Pascal | Swift | Rust |

src/rust/deque.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#[derive(Debug)]
12
struct Deque<T> {
23
deque: Vec<T>
34
}
@@ -38,4 +39,20 @@ impl<T> Deque<T> {
3839
fn peek_last(&self) -> Option<&T> {
3940
self.deque.last()
4041
}
42+
}
43+
44+
fn main(){
45+
let mut deque: Deque<i32> = Deque::<i32>::new();
46+
deque.add_first(1);
47+
deque.add_last(2);
48+
deque.add_first(3);
49+
println!("{:?}", deque);
50+
deque.remove_last();
51+
deque.remove_first();
52+
println!("{:?}", deque);
53+
println!("length: {:?}, is empty? {:?}", deque.length(), deque.is_empty());
54+
deque.add_first(1);
55+
deque.add_last(2);
56+
deque.add_first(3);
57+
println!("{:?}, {:?}", deque.peek(), deque.peek_last());
4158
}

src/rust/fila.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#[derive(Debug)]
2+
struct Fila<T> {
3+
fila: Vec<T>
4+
}
5+
6+
impl<T> Fila<T> {
7+
fn new() -> Self {
8+
Fila { fila: Vec::new() }
9+
}
10+
11+
fn length(&self) -> usize {
12+
self.fila.len()
13+
}
14+
15+
fn enqueue(&mut self, item: T) {
16+
self.fila.push(item)
17+
}
18+
19+
fn dequeue(&mut self) -> T {
20+
self.fila.remove(0)
21+
}
22+
fn is_empty(&self) -> bool {
23+
self.fila.is_empty()
24+
}
25+
26+
fn peek(&self) -> Option<&T> {
27+
self.fila.first()
28+
}
29+
}
30+
31+
fn main(){
32+
let mut fila: Fila<i32> = Fila::<i32>::new();
33+
fila.enqueue(1);
34+
println!("{:?}", fila);
35+
fila.dequeue();
36+
println!("length: {:?}, is empty? {:?}", fila.length(), fila.is_empty());
37+
fila.enqueue(1);
38+
fila.enqueue(2);
39+
fila.enqueue(3);
40+
println!("{:?}", fila.peek());
41+
}

0 commit comments

Comments
 (0)