Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. function createQueue() {
  2. const queue = []
  3.  
  4. return {
  5. enqueue: function(item){
  6. queue.unshift(item)
  7. },
  8. dequeue: function(item){
  9. queue.pop(item)
  10. },
  11. isEmpty: function(){
  12. return queue.length === 0
  13. },
  14. peek: function(){
  15. return queue[queue.length - 1]
  16. },
  17. length: function(){
  18. return queue.length
  19. }
  20.  
  21. }
  22.  
  23. }
  24.  
  25. const q = createQueue()
  26. console.log(q.enqueue(1))
  27. console.log(q.length())
  28. console.log(q.enqueue(2))
  29. console.log(q.length())
  30.  
  31.  
  32.  
  33. function createPriorityQueue(){
  34.  
  35. const highPriorityQueue = createQueue()
  36. const lowPriorityQueue = createQueue()
  37.  
  38. return{
  39.  
  40. enqueue: function(item, highPriority = false){
  41.  
  42. if(highPriority === true){
  43. return highPriorityQueue.enqueue(item)
  44. }
  45. return lowPriorityQueue.enqueue(item)
  46.  
  47. },
  48. dequeue: function(){
  49.  
  50. if(highPriorityQueue.isEmpty()){
  51. return lowPriorityQueue.dequeue()
  52. }
  53. return highPriorityQueue.dequeue()
  54. },
  55.  
  56. peek: function(){
  57. if(highPriorityQueue.isEmpty()){
  58. return lowPriorityQueue.peek()
  59. }
  60. return highPriorityQueue.peek()
  61. },
  62.  
  63. length: function(){
  64. return highPriorityQueue.length() + lowPriorityQueue.length()
  65. },
  66.  
  67. isEmpty: function(){
  68. highPriorityQueue.isEmpty() && lowPriorityQueue.isEmpty()
  69. }
  70. }
  71.  
  72. }
  73.  
  74. const qPriority = createPriorityQueue()
  75.  
  76. qPriority.enqueue("first task")
  77. qPriority.enqueue("second task")
  78. qPriority.enqueue("third task")
  79.  
  80. console.log(qPriority.peek())
  81.  
  82. qPriority.dequeue()
  83. console.log(qPriority.peek())
  84.  
  85. qPriority.enqueue("priority task", true)
  86. console.log(qPriority.peek())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement