-
Notifications
You must be signed in to change notification settings - Fork 0
/
sort.h
119 lines (104 loc) · 4.41 KB
/
sort.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
#ifndef __SORT_H_
#define __SORT_H_
#include "DLList.h"
/**
* @brief Definir um tipo de funcao de comparacao
*/
typedef char (cmpFunction) (Song *, Song *);
/**
* @brief Funcao para comparacao do atributo do nome do artista entre musicas
*
* @param (Song * song1) song: Endereço da estrutura da música
* @param (Song * song2) song: Endereço da estrutura da música
* @return Retorna 1 para representar que song1 > song2. caso contrario, retorna 0
*/
char artistCmp(Song * song1, Song * song2);
/**
* @brief Funcao para comparacao do atributo do data de lancamento entre musicas
*
* @param (Song * song1) song: Endereço da estrutura da música
* @param (Song * song2) song: Endereço da estrutura da música
* @return Retorna 1 para representar que song1 > song2. caso contrario, retorna 0
*/
char dateReleaseCmp(Song * song1, Song * song2);
/**
* @brief Funcao para retorna o inverso da funcao nameCmp
*
* @param (Song * song1) song: Endereço da estrutura da música
* @param (Song * song2) song: Endereço da estrutura da música
* @return Retorna 1 para representar que song1 < song2. caso contrario, retorna 0
*/
char decreasenameCmp(Song * song1, Song * song2);
/**
* @brief Funcao para procurar um no em uma lista duplamente encadeada atraves de uma funcao de comparacao
*
* @param (char) type: Caractere que representa o tipo de ordenacao
* @return Retorna a funcao responsavel de gerenciar esse tipo de ordenacao
*/
int findIndexDLList(DLinkedList * list, DNode * node, char type);
/**
* @brief Estrutura para comparacao do atributo de genero musical entre musicas
*
* @param (Song * song1) song: Endereço da estrutura da música
* @param (Song * song2) song: Endereço da estrutura da música
* @return Retorna 1 para representar que song1 > song2. caso contrario, retorna 0
*/
char genreCmp(Song * song1, Song * song2);
/**
* @brief Funcao para procurar um no em uma lista duplamente encadeada atraves de uma funcao de comparacao
*
* @param (char) type: Caractere que representa o tipo de ordenacao
* @return Retorna a funcao responsavel de gerenciar esse tipo de ordenacao
*/
cmpFunction * getTypeSortDLList(char type);
/**
* @brief Funcao para procurar um no em uma lista duplamente encadeada atraves de uma funcao de comparacao
*
* @param (DLinkedList *) list: Endereço da estrutura da lista
* @param (DNode *) dnode: Endereço da estrutura do no
* @param (char (*cmpFunction) (Song *, Song *)): Endereço da funcao de comparacao
* @return Retorna o indice do no dentro da lista encadeada
*/
int linearSearchDLList(DLinkedList * list, DNode * node, cmpFunction * cmp);
/**
* @brief Funcao para mesclar duas listas duplamente encadeadas
*
* @param (DLinkedList *) first: Endereço da estrutura da lista
* @param (DLinkedList *) second: Endereço da estrutura da lista
* @param (char (*cmpFunction) (Song *, Song *)): Endereço da funcao de comparacao
* @return Retorna lista duplamente encadeada que contem as listas passadas como parametro
*/
DLinkedList * mergeDLList(DLinkedList * first, DLinkedList * second, char (*cmpFunction) (Song *, Song *));
/**
* @brief Funcao para ordenacao de uma lista duplamente encadeada
*
* @param (DLinkedList * list): Endereço da estrutura da lista
* @param (char (*cmpFunction) (Song *, Song *)): Endereço da funcao de comparacao
* @return Retorna lista duplamente encadeada ordenada conforme a funcao passada
*/
DLinkedList * mergeSort(DLinkedList * list, char (*cmpFunction) (Song *, Song *));
/**
* @brief Funcao para comparacao do atributo nome entre musicas
*
* @param (Song * song1) song: Endereço da estrutura da música
* @param (Song * song2) song: Endereço da estrutura da música
* @return Retorna 1 para representar que song1 > song2. caso contrario, retorna 0
*/
char nameCmp(Song * song1, Song * song2);
/**
* @brief Funcao para comparacao do atributo nome entre musicas
*
* @param (DLinkedList *) list: Endereco da estrutura de uma playlist
* @param (char) type: Caractere que representa o tipo de ordenacao
* @return REtorna a lista duplamente encadeada ordenada conforme o caractere informado
*/
DLinkedList * sortDLList(DLinkedList * list, char type);
/**
* @brief Funcao para verificar se o primeiro nome e maior que o segundo nome
*
* @param (char *) name1: String
* @param (char *) name2: String
* @return Retorna a lista duplamente encadeada ordenada conforme o caractere informado
*/
char strdiff(char * name1, char * name2);
#endif // __SORT_H_