-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtdd_code.h
101 lines (88 loc) · 2.92 KB
/
tdd_code.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
//======== Copyright (c) 2021, FIT VUT Brno, All rights reserved. ============//
//
// Purpose: Test Driven Development - priority queue code
//
// $NoKeywords: $ivs_project_1 $tdd_code.cpp
// $Author: RICHARD KOCIAN <xkocia19@stud.fit.vutbr.cz>
// $Date: $2022-03-10
//============================================================================//
/**
* @file tdd_code.h
* @author RICHARD KOCIAN
*
* @brief Definice rozhrani prioritni fronty.
*/
#pragma once
#ifndef TDD_CODE_H_
#define TDD_CODE_H_
/**
* @brief The PriorityQueue class
* Prioritni fronta (polozky vzdy serazeny od max po min) implementovana pomoci
* tzv. linked listu (kazda polozka ma odkaz na nasledujici polozku).
* Dale ma kazda polozka hodnotu typu "int", pricemz fronta muze obsahovat vice
* polozek se stejnou hodnotou.
*/
class PriorityQueue
{
public:
/**
* @brief PriorityQueue
* Konstruktor, vytvori prazdnou frontu.
*/
PriorityQueue();
/**
* @brief ~PriorityQueue
* Destruktor, odstrani vsechny polozky i frontu samotnou.
*/
~PriorityQueue();
/**
* @brief The Element_t struct
* Struktura polozky ve fronte.
*/
struct Element_t {
Element_t *pNext; ///< Ukazatel na nasledujici prvek ve fronte.
int value; ///< Hodnota teto polozky ve fronte.
};
/**
* @brief Insert
* Zaradi novou polozku s hodnotou "value" do fronty na patricne misto (tak
* aby bylo zachovano poradi max->min). Pokud polozka s danou hodnotou jiz
* existuji zaradi novou polozku pred/za jiz existujici.
* @param value Hodnota nove polozky.
*/
void Insert(int value);
/**
* @brief Remove
* Odstrani polozku s hodnotou "value" z fronty a vrati "true", pokud polozka
* neni nalezena vrati "false". Pokud se ve fronte nachazi vice polozek se
* stejnou hodnotou "value", pak odstrani libovolnou z nich.
* @param value Hodnota polozky, ktera ma byt odstranena.
* @return Vrati true, pokud byla polozka nalezena a odstranena, jinak vraci false.
*/
bool Remove(int value);
/**
* @brief Find
* Nalezne libovolnou polozku s hodnotou "value" a vrati ukazatel na tuto polozku,
* nebo NULL pokud takova neexistuje.
* @param value Hodnota hledane polozky.
* @return Vrati ukazatel na polozku s hodnotou "value", nebo NULL pokud takova neexistuje.
*/
Element_t *Find(int value);
/**
* @brief Length
* Vraci delku fronty. Delka prazdne fronty je 0
* @return Vrati delku fronty.
*/
size_t Length();
/**
* @brief GetHead
* Vraci ukazatel na prvni polozku ve fronte, ktera je vzdy zaroven polozkou
* s nejvetsi hodnotou.
* @return Vraci ukazatel na 1./nejvetsi polozku fronty, nebo NULL, pokud je
* fronta prazdna.
*/
Element_t *GetHead();
protected:
Element_t *m_pHead; ///< Ukazatel na zacatek fronty.
};
#endif // TDD_CODE_H_