-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdata_structures.h
More file actions
59 lines (48 loc) · 1.9 KB
/
data_structures.h
File metadata and controls
59 lines (48 loc) · 1.9 KB
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
#include <stdbool.h>
#ifndef _DATA_STRUCTURES_H_
#define _DATA_STRUCTURES_H_
/* Todo: Make everything dynamic? Right now everything is just ints. */
/* Stack */
typedef struct Stack {
int top;
int maxsize;
int* items;
} Stack;
extern Stack* createStack(int maxsize);
extern int isFullStack(Stack* stack);
extern int isEmptyStack(Stack* stack);
extern void push(Stack* stack, int item);
extern int pop(Stack* stack);
/* Dynamic Array */
typedef struct DynamicArray {
int capacity; /* Total capacity of the internal fixed size array */
int size; /* Current number of items in the array */
int *items;
} DynamicArray;
extern DynamicArray *create_DynamicArray();
extern bool enlarge_DynamicArray(DynamicArray* array);
extern bool shrink_DynamicArray(DynamicArray* array);
extern bool addAtIndex_DynamicArray(DynamicArray* array, int item, int index);
extern bool prepend_DynamicArray(DynamicArray* array, int item);
extern bool append_DynamicArray(DynamicArray* array, int item);
extern int getItemAtIndex_DynamicArray(DynamicArray* array, int item);
extern int removeAtIndex_DynamicArray(DynamicArray* array, int index);
extern int removeAtIndex2_DynamicArray(DynamicArray* array, int index);
extern int replaceAtIndex_DynamicArray(DynamicArray* array, int item, int index);
extern int size_DynamicArray(DynamicArray* array);
extern void forEach_DynamicArray(DynamicArray* array, void (*callback)(int item));
/* SinglyLinkedList Node */
typedef struct Node {
int item; /* data item */
struct Node *next; /* Points to next node */
} Node;
typedef struct List {
struct Node *head; /* Points to first item (the head of the list) */
} List;
extern List* createList();
extern void pushToList(List** list, int value);
extern void printList(List* list);
extern void deleteFromListByValue(List** list, int value);
extern void deleteFromListByValue2(List** list, int value);
/* Binary Search Tree */
#endif