forked from RohacekD/IFJ2015
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathial.h
117 lines (101 loc) · 3.3 KB
/
ial.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
/*
* ial.h
* Project: interpreter
* Created on: 18. 10. 2015
* Author: xdocek09
* Description: Hlavickovy soubor (pro ial.c) vestavenych funkci pro IAL.
*/
/**
* @file ial.h
* @author xdocek09
* @brief Hlavickovy soubor (pro ial.c) vestavenych funkci pro IAL.
*/
#ifndef IAL_H_
#define IAL_H_
#include <stdlib.h>
#include <stdio.h>
#include "str.h"
typedef struct tBSTNode {
string* key;
void* data;
struct tBSTNode *l;
struct tBSTNode *r;
} *tBSTNodePtr;
int len(char* string);
/**
* Vypocita u retezce, hodnoty skoku pro dané znaky.
* @param string - retezec
* @param charJump - zde se ulozi hodnoty skoku (indexujeme pomoci znaku)
*/
void computeJumps(char* string, int charJump[]);
/**
* Stanovi index pocatecni polohy vzorku v hledanem textu.
* @param string - text pro vyhledavani
* @param searchString - retezec, ktery se vyhledava
* @param charJump - predvypocitane hodnoty skoku pro searchString pomoci computeJumps
* @return Vraci index pocatecni polohy vzorku v danem textu. Pri neuspechu
* vraci delku retezce.
*/
int BMA(char* string, char* searchString, int charJump[]);
/**
* Vyhledavani podretezce v ratezci
* @param string[in] - String ve kterem vyhledava.
* @param searchString[in] - String, ktery vyhledava.
* @return Vraci index, na zacatek nalezene sekvence ve string. Pokud chyba vrati delku string.
*/
int find(char* string, char* searchString);
/**
* Razeni pomoci heap sort
* @param string - razeny retezec
*/
void heapSort(char* string);
/**
* Vyhledava v binarnim vyhledavacim stromu
* @param rootPtr - ukazatel na koren stromu
* @param key - vyhledavany klic
* @return 0-nenalezeno, 1-nalezeno
*/
int BSTSearch(tBSTNodePtr rootPtr, string* key);
/**
* Vyhledava v binarnim vyhledavacim stromu. Vraci ukazatel na nalezeny uzel jinak NULL.
* @param rootPtr - ukazatel na koren stromu
* @param key - vyhledavany klic
* @param store - Vraci zde ukazatel na nalezeny uzel nebo NULL.
*/
void BSTSearchTree(tBSTNodePtr rootPtr, string* key, tBSTNodePtr* store);
/**
* Vklada do binarniho vyhledavaciho stromu novy uzel nebo
* aktualizuje stary v pripade, ze klic jiz ve stromu existuje.
* @param rootPtr - ukazatel na koren stromu
* @param key - klic vkladaneho/aktualizovaneho uzlu
* @param data - data vkladaneho/aktualizovaneho uzlu
* @return 0-chyba, 1-v poradku
*/
int BSTInsert(tBSTNodePtr* rootPtr, string* key, void* data);
/**
* Maze z binarniho vyhledavaciho stromu uzel s danym klicem key.
* @param rootPtr - ukazatel na koren stromu
* @param key - klic uzlu, ktery ma byt odstranen
*/
void BSTDelete(tBSTNodePtr* rootPtr, string* key);
/**
* Smaze cely strom. Pro mazani dat pouziva funkci dataFree danou ukazatelem.
* @param rootPtr - ukazatel na koren stromu
* @param dataFree - ukazatel na funkci, ktera uvolni polozku data z pameti
*/
void BSTFree(tBSTNodePtr* rootPtr, void (*dataFree)(void*));
/**
* Vytvari uzel.
* @param node - ukazatel pro alokaci uzlu
* @param key - klic noveho uzlo
* @param data - data noveho uzlo
* @return 0-chyba, 1-v poradku
*/
int BSTCreateNode(tBSTNodePtr*, string*, void*);
/**
* funkce prochazi stromem a nastavi priznak, pokud narazi na nedefinovanou funkci
* @param rootPtr - koren stromu
*/
void BSTcheckFuncDef(tBSTNodePtr *rootPtr);
#endif /* IAL_H_ */
/*** End of file: ial.h ***/