forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueueUsing2Stacks.js
More file actions
Latest commit
52 lines (46 loc) · 1.2 KB
/
Copy pathQueueUsing2Stacks.js
File metadata and controls
52 lines (46 loc) · 1.2 KB
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
// implementation of Queue using 2 stacks
// contribution made by hamza chabchoub for a university project
classQueue{
constructor(){
this.inputStack=[]
this.outputStack=[]
}
// Push item into the inputstack
enqueue(item){
this.inputStack.push(item)
}
dequeue(){
// push all items to outputstack
this.outputStack=[]
while(this.inputStack.length>0){
this.outputStack.push(this.inputStack.pop())
}
// return the top element of the outputstack if any
if(this.outputStack.length>0){
consttop=this.outputStack.pop()
// repush all the items to the inputstack
this.inputStack=[]
while(this.outputStack.length>0){
this.inputStack.push(this.outputStack.pop())
}
returntop
}
}
// display elements of the inputstack
listIn(output=(value)=>console.log(value)){
leti=0
while(i<this.inputStack.length){
output(this.inputStack[i])
i++
}
}
// display element of the outputstack
listOut(output=(value)=>console.log(value)){
leti=0
while(i<this.outputStack.length){
output(this.outputStack[i])
i++
}
}
}
export{Queue}