-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Reverse_queue_using_stack.java
155 lines (150 loc) · 2.98 KB
/
Reverse_queue_using_stack.java
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
A Queue is a linear structure which follows a particular order in which the operations are performed.
The order is First In First Out. The below program reverses a queue using stack data structure.
Here stack and queue are implemented using linked list.
*/
import java.util.Scanner;
class Stack
{
int data;
Stack next;
}
class Queue
{
int data;
Queue next;
}
class Code{
static Stack top = null;
static Queue front = null;
static Queue rear = null;
static void push(int n)
{
Stack New = new Stack();
if (top == null)
{
top = New;
top.data = n;
top.next = null;
}
else
{
New.next = top;
top = New;
top.data = n;
}
}
static int pop()
{
if (top != null)
{
Stack ptr = top;
top = top.next;
return ptr.data;
}
return 0;
}
static boolean isStackEmpty()
{
if (top == null)
{
return true;
}
return false;
}
static boolean isQueueEmpty()
{
if (front == null)
{
return true;
}
return false;
}
static void enqueue(int n)
{
Queue New = new Queue();
if (front == null)
{
front = New;
rear = front;
front.data = n;
rear.next = null;
}
else
{
rear.next = New;
New.data = n;
rear = New;
rear.next = null;
}
}
static int dequeue()
{
if (front != null)
{
Queue ptr = front;
front = front.next;
return ptr.data;
}
return 0;
}
static void printQueue()
{
Queue ptr = front;
while (ptr != null)
{
System.out.println(ptr.data);
ptr = ptr.next;
}
}
static void reverseQueue()
{
while (!isQueueEmpty())
{
push(dequeue());
}
while (!isStackEmpty())
{
enqueue(pop());
}
}
public static void main(String[] args) {
int n;
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number of elements to insert into queue");
n = sc.nextInt();
int temp;
System.out.println("Enter the elements");
for (int i = 0; i < n; i++)
{
temp = sc.nextInt();
enqueue(temp);
}
System.out.println("Elements in the queue");
printQueue();
System.out.println("Elements in queue after reversing using stack");
reverseQueue();
printQueue();
}
}
/*
Sample I/O:
Enter the number of elements to insert into queue
5
Enter the elements
2 4 3 1 5
Elements in the queue
2
4
3
1
5
Elements in queue after reversing using stack
5
1
3
4
2
Time complexity : O(n)
Space complexity : O(n)
*/