-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvector.h
119 lines (101 loc) · 3.14 KB
/
vector.h
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
#if !defined(_VECTOR_H_)
#define _VECTOR_H_
typedef void * data_type;
typedef struct Vector Vector;
/**
* @brief Construct a new Vector object
* @return Ponteiro para o novo Vector.
*/
Vector *vector_construct();
/** @brief Adiciona um elemento no final do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param val O valor a ser adicionado.
*/
void vector_push_back(Vector *v, data_type val);
/**
* @brief Adiciona um elemento no início do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param val O valor a ser adicionado.
* @return O elemento na posição i.
*/
data_type vector_get(Vector *v, int i);
/**
* @brief Define o valor de um elemento do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param i A posição do elemento.
* @param val O valor a ser definido.
*/
void vector_set(Vector *v, int i, data_type val);
/**
* @brief Retorna o tamanho do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @return O tamanho do vetor.
*/
int vector_size(Vector *v);
/**
* @brief Remove um elemento do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param i A posição do elemento a ser removido.
* @return O elemento removido.
*/
data_type vector_remove(Vector *v, int i);
/**
* @brief Remove o primeiro elemento do vetor e ordena os demais elementos para preencher o espaço.
* @param v Ponteiro para a estrutura do Vector.
* @return O elemento removido.
*/
data_type vector_pop_front(Vector *v);
/**
* @brief Remove o último elemento do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @return O elemento removido.
*/
data_type vector_pop_back(Vector *v);
/**
* @brief Insere um elemento em uma posição do vetor e reorganiza os demais elementos para abrir espaço.
* @param v Ponteiro para a estrutura do Vector.
* @param i A posição do elemento a ser inserido.
* @param val O valor a ser inserido.
*/
void vector_insert(Vector *v, int i, data_type val);
/**
* @brief Troca a posição de dois elementos do vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param i A posição do primeiro elemento.
* @param j A posição do segundo elemento.
*/
void vector_swap(Vector *v, int i, int j);
/**
* @brief Ordena o vetor usando o algoritmo Bubble Sort.
* @param v Ponteiro para a estrutura do Vector.
*/
void vector_sort(Vector *v);
/**
* @brief Procura um elemento no vetor usando o algoritmo de busca binária.
* @param v Ponteiro para a estrutura do Vector.
* @param val O valor a ser procurado.
*/
int vector_binary_search(Vector *v, data_type val);
/**
* @brief Inverte a ordem dos elementos do vetor.
* @param v Ponteiro para a estrutura do Vector.
*/
void vector_reverse(Vector *v);
/**
* @brief Copia um vetor.
* @param v Ponteiro para a estrutura do Vector.
* @return Ponteiro para o novo Vector.
*/
Vector *vector_copy(Vector *v);
/**
* @brief Limpa o vetor.
* @param v Ponteiro para a estrutura do Vector.
*/
void vector_clear(Vector *v);
/**
* @brief Desaloca o vetor.
* @param v Ponteiro para a estrutura do Vector.
* @param destructor Função para desalocar os elementos do vetor.
*/
void vector_destroy(Vector *v, void (*destructor)(data_type));
#endif // _VECTOR_H_