Website Summary Files Commits Branches @commit @diff @stats
path: root / Templates / Queue
diff options
context:
space:
mode:
Commit0218c678e13e1cb94a352c91733cea68467dc566 (patch)
Author
 Angeld55 <angel_dimitriev@abv.bg>
2021-02-14 23:06:35 +0200
Committer
 Angeld55 <angel_dimitriev@abv.bg>
2021-02-14 23:06:35 +0200
Files16fb3114cb560242458d10411765e50f5d6183db /Templates/Queue
Object-oriented_programming_FMI-0218c678e13e1cb94a352c91733cea68467dc566.tar
Object-oriented_programming_FMI-0218c678e13e1cb94a352c91733cea68467dc566.tar.gz
Object-oriented_programming_FMI-0218c678e13e1cb94a352c91733cea68467dc566.zip
Parentd4ae0ef9ec1b54420176c4a88e09f2fd44ae31b0 (diff)
start from scratch
2 files changed, 0 insertions, 144 deletions
-rw-r--r--Templates/Queue/Queue.hpp121
-rw-r--r--Templates/Queue/main.cpp23
diff --git a/Templates/Queue/Queue.hpp b/Templates/Queue/Queue.hpp
deleted file mode 100644
index 128f1df..0000000
--- a/Templates/Queue/Queue.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef QUEUE_HDR
-#define QUEUE_HDR
-
-#include <iostream>
-using namespace std;
-
-template<typename T>
-class Queue {
-private:
- T * arr;
- int capacity;
- int count;
-
- int whereToPut;
- int whereToGet;
- void Resize();
- void CopyFrom(const Queue<T>& other);
- void Free();
-
-public:
- Queue();
- Queue(const Queue<T>& other);
- Queue<T>& operator=(const Queue<T>& other);
- ~Queue();
-
- bool isEmpty() const;
- void Push(T el);
- T Pop();
- T& Peek();
-};
-
-template <typename T>
-void Queue<T>::Resize() {
- T* temp = new T[capacity * 2];
- for (int i = 0; i < capacity; ++i)
- temp[i] = Pop();
- whereToGet = 0;
- whereToPut = capacity;
- count = capacity;
- capacity *= 2;
- delete[] arr;
- arr = temp;
-}
-
-template <typename T>
-void Queue<T>::CopyFrom(const Queue<T>& other) {
- arr = new T[other.capacity];
- for (int i = 0; i < other.count; ++i)
- arr[i] = other.arr[i];
- count = other.count;
- capacity = other.capacity;
- whereToPut = other.whereToPut;
- whereToGet = other.whereToGet;
-}
-
-template <typename T>
-void Queue<T>::Free() {
- delete[] arr;
- count = capacity = 0;
-}
-
-template <typename T>
-Queue<T>::Queue() {
- arr = new T[4];
- capacity = 4;
- count = 0;
- whereToPut = 0;
- whereToGet = 0;
-}
-
-template <typename T>
-Queue<T>::Queue(const Queue<T>& other) {
- CopyFrom(other);
-}
-
-template <typename T>
-Queue<T>& Queue<T>::operator=(const Queue<T>& other) {
- if (this != &other) {
- Free();
- CopyFrom(other);
- }
- return *this;
-}
-
-template <typename T>
-Queue<T>::~Queue() {
- Free();
-}
-
-template <typename T>
-bool Queue<T>::isEmpty() const {
- return count == 0;
-}
-
-template <typename T>
-void Queue<T>::Push(T el) {
- if (count == capacity)
- Resize();
- arr[whereToPut] = el;
- (whereToPut += 1) %= capacity;
- count++;
-}
-
-template <typename T>
-T Queue<T>::Pop() {
- if (count == 0)
- throw "Queue is empty";
- T elToReturn = arr[whereToGet];
- count--;
- (whereToGet += 1) %= capacity;
- return elToReturn;
-}
-
-template <typename T>
-T& Queue<T>::Peek() {
- if (isEmpty())
- throw std::logic_error("empty queue");
- return arr[whereToGet];
-}
-
-#endif // !QUEUE_HDR
diff --git a/Templates/Queue/main.cpp b/Templates/Queue/main.cpp
deleted file mode 100644
index 89b8468..0000000
--- a/Templates/Queue/main.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "Queue.hpp"
-
-
-int main()
-{
- Queue<int> q;
- q.Enqueue(3);
- q.Dequeue();
- q.Enqueue(1);
- q.Enqueue(2);
- q.Enqueue(3);
- q.Enqueue(4);
- q.Enqueue(5);
- q.Enqueue(6);
- cout<<q.Dequeue();
-
- cout << q.Dequeue();
- cout << q.Dequeue();
- cout << q.Dequeue();
- cout << q.Dequeue();
- cout << q.Dequeue();
- return 0;
-}