From 57f4aaaba476a1907cf6d2124fb60acae8073405 Mon Sep 17 00:00:00 2001 From: Satyam Mishra <46562151+satyamm5082000@users.noreply.github.com> Date: Tue, 3 Nov 2020 20:33:09 +0530 Subject: [PATCH 1/2] Create Queue.cpp --- Queue.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 Queue.cpp diff --git a/Queue.cpp b/Queue.cpp new file mode 100644 index 0000000..c97471a --- /dev/null +++ b/Queue.cpp @@ -0,0 +1,124 @@ +#include +using namespace std; + +template +class QueueUsingArray { + T* data; + int r; + int f; + int s; + int cap; + +public: + QueueUsingArray (int ss) { + data = new T [ss]; + cap = ss; + f = -1; + r = 0; + s = 0; + } + + int size () { + return s; + } + + bool isEmpty () { + return s == 0; + } + + void enqueue (T d) { + if (s == cap) { + + T* newData = new T [cap * 2]; + + int ff = 0; + + for (int i = f; i < cap; i++) + { + newData[ff] = data[i]; + ff++; + } + + for (int i = 0; i < f; i++) + { + newData[ff] = data[i]; + ff++; + } + /* + for (int i = f; i < r; i = (i + 1) % cap) + { + cout << data[i] << " "; + newData[ff] = data[i]; + ff++; + } + + cout << endl;*/ + + delete []data; + data = newData; + cap = cap * 2; + f = 0; + r = cap; + + // cout << "Queue is Full!!" << endl; + // return; + } + + data[r] = d; + r = (r + 1) % cap; + if (f == -1) + f = 0; + + s++; + } + + + T front () { + if (s == 0) { + cout << "Queue is Empty!!" << endl; + return 0; + } + return data[f]; + } + + T dequeue () { + if (s == 0) { + cout << "Queue is Empty!!" << endl; + return 0; + } + T t = data[f]; + f = (f + 1) % cap; + s--; + if (s == 0) { + f = -1; + r = 0; + } + return t; + + s--; + } +}; +int main () +{ +#ifndef ONLINE_JUDGE + //for getting input from input.txt + freopen ("input.txt", "r", stdin); + //for writing output to output.txt + freopen ("output.txt", "w", stdout); +#endif + QueueUsingArray q(5); + q.enqueue(10); + q.enqueue(20); + q.enqueue(30); + q.enqueue(40); + q.enqueue(50); + q.enqueue(60); + + cout << q.front() << endl; + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; + + cout << q.size() << endl; + cout << q.isEmpty() << endl; +} From 446bf5403650182d0bd7d02e5fa2c84398694282 Mon Sep 17 00:00:00 2001 From: Satyam Mishra <46562151+satyamm5082000@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:31:30 +0530 Subject: [PATCH 2/2] Update Queue.cpp --- Queue.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 90 insertions(+), 13 deletions(-) diff --git a/Queue.cpp b/Queue.cpp index c97471a..cbf15b2 100644 --- a/Queue.cpp +++ b/Queue.cpp @@ -1,6 +1,12 @@ #include using namespace std; +/* +Implemented Queue +using Array and all +it function take O(1) +*/ + template class QueueUsingArray { T* data; @@ -44,24 +50,12 @@ class QueueUsingArray { newData[ff] = data[i]; ff++; } - /* - for (int i = f; i < r; i = (i + 1) % cap) - { - cout << data[i] << " "; - newData[ff] = data[i]; - ff++; - } - - cout << endl;*/ delete []data; data = newData; cap = cap * 2; f = 0; r = cap; - - // cout << "Queue is Full!!" << endl; - // return; } data[r] = d; @@ -98,6 +92,89 @@ class QueueUsingArray { s--; } }; + +/* +Implemented Queue +using LinkList and all +it function take O(1) +*/ +template +class Node { + +public: + T data; + Node *next; + + Node(int d) + { + data = d; + next = NULL; + } +}; + +template +class QueueUsingLL { + + Node *head, *tail; + int s = 0; + +public: + + QueueUsingLL() { + head = NULL; + tail = NULL; + s = 0; + } + + int size () { + return s; + } + + bool isEmpty () { + return s == 0; + } + + void enqueue (T d) { + Node* newNode = new Node(d); + + if (head == NULL) + { + head = newNode; + tail = newNode; + } + else + { + tail->next = newNode; + tail = newNode; + } + + s++; + } + + T front () { + if (s == 0) { + cout << "Queue is Empty!!" << endl; + return 0; + } + return head->data; + } + + T dequeue () { + if (s == 0) { + cout << "Queue is Empty!!" << endl; + return 0; + } + + Node* free = head; + head = NULL; + delete head; + head = free->next; + + return free->data; + s--; + } + +}; int main () { #ifndef ONLINE_JUDGE @@ -106,7 +183,7 @@ int main () //for writing output to output.txt freopen ("output.txt", "w", stdout); #endif - QueueUsingArray q(5); + QueueUsingLL q; q.enqueue(10); q.enqueue(20); q.enqueue(30);