Algorithms_in_C++  1.0.0
Set of algorithms implemented in C++.
queue.h
1 /* This class specifies the basic operation on a queue as a linked list */
2 #ifndef DATA_STRUCTURES_QUEUE_H_
3 #define DATA_STRUCTURES_QUEUE_H_
4 
5 #include <cassert>
6 #include <iostream>
7 
8 /** Definition of the node */
9 template <class Kind>
10 struct node {
11  Kind data;
12  node<Kind> *next;
13 };
14 
15 /** Definition of the queue class */
16 template <class Kind>
17 class queue {
18  public:
19  /** Show queue */
20  void display() {
21  node<Kind> *current = queueFront;
22  std::cout << "Front --> ";
23  while (current != NULL) {
24  std::cout << current->data << " ";
25  current = current->next;
26  }
28  std::cout << "Size of queue: " << size << std::endl;
29  }
30 
31  /** Default constructor*/
32  queue() {
33  queueFront = NULL;
34  queueRear = NULL;
35  size = 0;
36  }
37 
38  /** Destructor */
39  ~queue() {}
40 
41  /** Determine whether the queue is empty */
42  bool isEmptyQueue() { return (queueFront == NULL); }
43 
44  /** Add new item to the queue */
45  void enQueue(Kind item) {
46  node<Kind> *newNode;
47  newNode = new node<Kind>;
48  newNode->data = item;
49  newNode->next = NULL;
50  if (queueFront == NULL) {
51  queueFront = newNode;
52  queueRear = newNode;
53  } else {
54  queueRear->next = newNode;
55  queueRear = queueRear->next;
56  }
57  size++;
58  }
59 
60  /** Return the first element of the queue */
61  Kind front() {
62  assert(queueFront != NULL);
63  return queueFront->data;
64  }
65 
66  /** Remove the top element of the queue */
67  void deQueue() {
68  node<Kind> *temp;
69  if (!isEmptyQueue()) {
70  temp = queueFront;
71  queueFront = queueFront->next;
72  delete temp;
73  size--;
74  } else {
75  std::cout << "Queue is empty !" << std::endl;
76  }
77  }
78 
79  /** Clear queue */
80  void clear() { queueFront = NULL; }
81 
82  private:
83  node<Kind> *queueFront; /**< Pointer to the front of the queue */
84  node<Kind> *queueRear; /**< Pointer to the rear of the queue */
85  int size;
86 };
87 
88 #endif // DATA_STRUCTURES_QUEUE_H_
CreateSet
void CreateSet(int n)
Definition: disjoint_set.cpp:37
data_structures::linked_list::isDigit
bool isDigit(const std::string &s)
Definition: linked_list.cpp:40
queue::queueFront
node< Kind > * queueFront
Definition: queue.h:83
data_structures::linked_list::list::erase
void erase(int old_elem)
Definition: linked_list.cpp:152
queue::display
void display()
Definition: queue.h:20
std::string
STL class.
std::shared_ptr
STL class.
linked_list
Functions for singly linked list algorithm.
main
int main()
Definition: disjoint_set.cpp:93
data_structures::linked_list::list
Definition: linked_list.cpp:81
std::vector
STL class.
data_structures::linked_list::list::last
std::shared_ptr< link > last
last link on the list
Definition: linked_list.cpp:84
Find
int Find(int x)
Definition: disjoint_set.cpp:53
node
Definition: avltree.cpp:13
node
struct list node
queue::queue
queue()
Definition: queue.h:32
main
int main()
Definition: linkedlist_implentation_usingarray.cpp:79
std::queue
STL class.
std::shared_ptr::reset
T reset(T... args)
search
Search algorithms.
Node
Definition: linkedlist_implentation_usingarray.cpp:14
data_structures::linked_list::list::display
void display()
Definition: linked_list.cpp:178
data_structures::linked_list::list::push_front
void push_front(int new_elem)
Definition: linked_list.cpp:137
std::stoi
T stoi(T... args)
data_structures::linked_list::list::push_back
void push_back(int new_elem)
Definition: linked_list.cpp:123
queue::enQueue
void enQueue(Kind item)
Definition: queue.h:45
queue::isEmptyQueue
bool isEmptyQueue()
Definition: queue.h:42
cll
Definition: cll.h:17
queue::clear
void clear()
Definition: queue.h:80
insert
node * insert(node *root, int item)
Definition: avltree.cpp:66
std::cout
main
int main()
Definition: linked_list.cpp:219
data_structures
Data Structures algorithms.
insertAtTheBeginning
void insertAtTheBeginning(int data)
Definition: linkedlist_implentation_usingarray.cpp:50
endl
#define endl
Definition: matrix_exponentiation.cpp:36
InSameUnion
bool InSameUnion(int x, int y)
Definition: disjoint_set.cpp:67
getnode
int getnode()
Definition: linkedlist_implentation_usingarray.cpp:32
queue::~queue
~queue()
Definition: queue.h:39
data_structures::linked_list::list::search
std::shared_ptr< link > search(int find_elem)
Definition: linked_list.cpp:194
data
int data[MAX]
test data
Definition: hash_search.cpp:24
queue::front
Kind front()
Definition: queue.h:61
queue
Definition: queue.h:17
data_structures::linked_list::list::first
std::shared_ptr< link > first
link before the actual first element
Definition: linked_list.cpp:83
std::endl
T endl(T... args)
data_structures::linked_list::list::list
list()
Definition: linked_list.cpp:89
std::left
T left(T... args)
std
STL namespace.
freeNode
void freeNode(int nodeToBeDeleted)
Definition: linkedlist_implentation_usingarray.cpp:42
Union
void Union(int x, int y)
Definition: disjoint_set.cpp:78
data_structures::linked_list::list::isEmpty
bool isEmpty()
Definition: linked_list.cpp:111
std::cin
Btree
Definition: morrisinorder.cpp:10
double_linked_list
Definition: doubly_linked_list.cpp:11
queue::queueRear
node< Kind > * queueRear
Definition: queue.h:84
list
Definition: list_array.cpp:8
main
int main()
Definition: graph_coloring.cpp:96
AvailArray
Node AvailArray[100]
array that will act as nodes of a linked list.
Definition: linkedlist_implentation_usingarray.cpp:19
queue::deQueue
void deQueue()
Definition: queue.h:67