forked from sachuverma/DataStructures-Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2eb9f21
commit 68bb9df
Showing
3 changed files
with
103 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
99 changes: 99 additions & 0 deletions
99
Striver Sheet/Day-13/Implement Queue using Linked List.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
/* | ||
Implement Queue using Linked List | ||
================================= | ||
Implement a Queue using Linked List. | ||
A Query Q is of 2 Types | ||
(i) 1 x (a query of this type means pushing 'x' into the queue) | ||
(ii) 2 (a query of this type means to pop an element from the queue and print the poped element) | ||
Example 1: | ||
Input: | ||
Q = 5 | ||
Queries = 1 2 1 3 2 1 4 2 | ||
Output: 2 3 | ||
Explanation: n the first testcase | ||
1 2 the queue will be {2} | ||
1 3 the queue will be {2 3} | ||
2 poped element will be 2 the | ||
queue will be {3} | ||
1 4 the queue will be {3 4} | ||
2 poped element will be 3. | ||
Example 2: | ||
Input: | ||
Q = 4 | ||
Queries = 1 2 2 2 1 3 | ||
Output: 2 -1 | ||
Explanation: In the second testcase | ||
1 2 the queue will be {2} | ||
2 poped element will be {2} then | ||
the queue will be empty. | ||
2 the queue is empty and hence -1 | ||
1 3 the queue will be {3}. | ||
Your Task: | ||
Complete the function push() which takes an integer as input parameter and pop() which will remove and return an element(-1 if queue is empty). | ||
Expected Time Complexity: O(1). | ||
Expected Auxiliary Space: O(1). | ||
Constraints: | ||
1 <= Q <= 100 | ||
1 <= x <= 100 | ||
*/ | ||
|
||
/* Structure of a node in Queue | ||
struct QueueNode | ||
{ | ||
int data; | ||
QueueNode *next; | ||
QueueNode(int a) | ||
{ | ||
data = a; | ||
next = NULL; | ||
} | ||
}; | ||
And structure of MyQueue | ||
struct MyQueue { | ||
QueueNode *front; | ||
QueueNode *rear; | ||
void push(int); | ||
int pop(); | ||
MyQueue() {front = rear = NULL;} | ||
}; */ | ||
|
||
//Function to push an element into the queue. | ||
void MyQueue::push(int x) | ||
{ | ||
QueueNode *nN = new QueueNode(x); | ||
if (!front && !rear) | ||
{ | ||
front = nN; | ||
rear = nN; | ||
} | ||
else | ||
{ | ||
rear->next = nN; | ||
rear = nN; | ||
} | ||
} | ||
|
||
//Function to pop front element from the queue. | ||
int MyQueue ::pop() | ||
{ | ||
if (front == NULL) | ||
return -1; | ||
int ans = front->data; | ||
if (front == rear) | ||
{ | ||
front = NULL; | ||
rear = NULL; | ||
} | ||
else | ||
{ | ||
front = front->next; | ||
} | ||
return ans; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters