-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstrdeque.h
66 lines (46 loc) · 2.16 KB
/
strdeque.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
#ifndef __STRDEQUE_H__
#define __STRDEQUE_H__
#ifdef __cplusplus
extern "C" {
#endif
// Tworzy nową, pustą kolejkę dwustronną ciągów znaków i zwraca jej
// identyfikator.
unsigned long strdeque_new();
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id, usuwa ją,
// a w przeciwnym przypadku nic nie robi.
void strdeque_delete(unsigned long id);
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id, zwraca liczbę jej
// elementów, a w przeciwnym przypadku zwraca 0.
size_t strdeque_size(unsigned long id);
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id oraz value != NULL,
// wstawia element value przed pozycją pos lub na koniec kolejki, jeżeli pos
// wykracza poza kolejkę.
// Gwarancje odnośnie kosztów wstawienia na początku, na końcu i w środku
// sa takie same jak w przypadku kontenera deque (plus koszt
// odnalezienia kolejki o danym identyfikatorze).
// Jeżeli kolejka dwustronna nie istnieje lub value == NULL, to nic nie robi.
// Pozycje w kolejce numerowane są od zera.
void strdeque_insert_at(unsigned long id, size_t pos, const char* value);
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id i pos nie wykracza
// poza nią, usuwa element na pozycji pos, a w przeciwnym przypadku nic nie
// robi.
void strdeque_remove_at(unsigned long id, size_t pos);
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id i pos nie wykracza
// poza kolejkę, zwraca wskaźnik do elementu na pozycji pos, a w przeciwnym
// przypadku zwraca NULL.
const char* strdeque_get_at(unsigned long id, size_t pos);
// Jeżeli istnieje kolejka dwustronna o identyfikatorze id, usuwa wszystkie
// jej elementy, a w przeciwnym przypadki nic nie robi.
void strdeque_clear(unsigned long id);
// Porównuje leksykograficznie kolejki dwustronne o identyfikatorach
// id1 i id2, zwracając
// -1, gdy kolejka(id1) < kolejka(id2),
// 0, gdy kolejka(id1) = kolejka(id2),
// 1, gdy kolejka(id1) > kolejka(id2).
// Jeżeli kolejka dwustronna o którymś z identyfikatorów nie istnieje, to jest
// traktowana jako leksykograficznie równa liście pustej.
int strdeque_comp(unsigned long id1, unsigned long id2);
#ifdef __cplusplus
}
#endif
#endif