diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..e7e9d11
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..1763e15
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..971920f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assignment-2-Gopal868484.iml b/assignment-2-Gopal868484.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/assignment-2-Gopal868484.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/assignment-2-Gopal868484/problem1/main/MyMain.class b/out/production/assignment-2-Gopal868484/problem1/main/MyMain.class
new file mode 100644
index 0000000..5f25cb3
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem1/main/MyMain.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem1/mybst/MyBinarySearchTree.class b/out/production/assignment-2-Gopal868484/problem1/mybst/MyBinarySearchTree.class
new file mode 100644
index 0000000..9a4dc9d
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem1/mybst/MyBinarySearchTree.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem1/node/TreeNode.class b/out/production/assignment-2-Gopal868484/problem1/node/TreeNode.class
new file mode 100644
index 0000000..cc44e12
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem1/node/TreeNode.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem2/main/MyMain.class b/out/production/assignment-2-Gopal868484/problem2/main/MyMain.class
new file mode 100644
index 0000000..fd53048
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem2/main/MyMain.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem3/main/MyMain.class b/out/production/assignment-2-Gopal868484/problem3/main/MyMain.class
new file mode 100644
index 0000000..5ff2a20
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem3/main/MyMain.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem3/myqueue/MyPriorityQueue.class b/out/production/assignment-2-Gopal868484/problem3/myqueue/MyPriorityQueue.class
new file mode 100644
index 0000000..8ea956b
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem3/myqueue/MyPriorityQueue.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem3/node/Node.class b/out/production/assignment-2-Gopal868484/problem3/node/Node.class
new file mode 100644
index 0000000..0f804a9
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem3/node/Node.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem4/main/MyMain.class b/out/production/assignment-2-Gopal868484/problem4/main/MyMain.class
new file mode 100644
index 0000000..2b91ec0
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem4/main/MyMain.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem4/myqueue/MyQueue.class b/out/production/assignment-2-Gopal868484/problem4/myqueue/MyQueue.class
new file mode 100644
index 0000000..96617a1
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem4/myqueue/MyQueue.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem5/circularqueue/MyCircularQueue.class b/out/production/assignment-2-Gopal868484/problem5/circularqueue/MyCircularQueue.class
new file mode 100644
index 0000000..aa0ac32
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem5/circularqueue/MyCircularQueue.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem5/main/MyMain.class b/out/production/assignment-2-Gopal868484/problem5/main/MyMain.class
new file mode 100644
index 0000000..a5ee8e2
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem5/main/MyMain.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem5/node/Node.class b/out/production/assignment-2-Gopal868484/problem5/node/Node.class
new file mode 100644
index 0000000..1289d39
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem5/node/Node.class differ
diff --git a/out/production/assignment-2-Gopal868484/problem5/student/Student.class b/out/production/assignment-2-Gopal868484/problem5/student/Student.class
new file mode 100644
index 0000000..3c6e415
Binary files /dev/null and b/out/production/assignment-2-Gopal868484/problem5/student/Student.class differ
diff --git a/src/problem1/main/MyMain.java b/src/problem1/main/MyMain.java
index 2539f2b..064aa96 100644
--- a/src/problem1/main/MyMain.java
+++ b/src/problem1/main/MyMain.java
@@ -1,11 +1,25 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:17 PM
- */
package problem1.main;
-// executable class
+
+import problem1.mybst.MyBinarySearchTree;
public class MyMain {
+ public static void main(String[] args) {
+ MyBinarySearchTree mytree = new MyBinarySearchTree();
+ mytree.insert(50);
+ mytree.insert(30);
+ mytree.insert(20);
+ mytree.insert(40);
+ mytree.insert(70);
+ mytree.insert(60);
+ mytree.insert(80);
+ mytree.insert(90);
+ mytree.insert(10);
+ System.out.println("PreOrder Traversal : ");
+ mytree.traversePreOrder();
+ System.out.println("Left children Only : ");
+ //traverseLeft() methods prints all left children as well as returns the no of nodes not having left a child
+ System.out.println("No of nodes not having Left Subchild: " + mytree.traverseLeft());
+
+ }
}
+
diff --git a/src/problem1/mybst/MyBinarySearchTree.java b/src/problem1/mybst/MyBinarySearchTree.java
index 1dd6794..90cbbf2 100644
--- a/src/problem1/mybst/MyBinarySearchTree.java
+++ b/src/problem1/mybst/MyBinarySearchTree.java
@@ -1,10 +1,139 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:17 PM
- */
package problem1.mybst;
-// to implement BinarySearchTree
+
+import problem1.node.TreeNode;
+
public class MyBinarySearchTree {
-}
+ private TreeNode root;
+
+ public MyBinarySearchTree() {
+ root = null;
+ }
+
+ public TreeNode getRoot() {
+ return root;
+ }
+
+
+ public void insert(int data) {
+ root = insertRecursive(root, data);
+ }
+
+ TreeNode insertRecursive(TreeNode root, int data) {
+ if (root == null) {
+ root = new TreeNode(data);
+ return root;
+ } else {
+ if (root.getData() > data) {
+ root.setLeft(insertRecursive(root.getLeft(), data));
+ } else if (root.getData() < data) {
+ root.setRight(insertRecursive(root.getRight(), data));
+ }
+ return root;
+ }
+ }
+
+
+ public void traverseInOrder() {
+ traverseInOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do inorder traversal of BST
+ void traverseInOrderRec(TreeNode root) {
+ if (root != null) {
+ traverseInOrderRec(root.getLeft());
+ System.out.print(root.getData() + " ");
+ traverseInOrderRec(root.getRight());
+ }
+ }
+
+ //prints only left nodes
+ public int traverseLeft() {
+ int noOfNodesNotHavingLeftChild = traverseLeftNodesRec(root, false);
+ System.out.println();
+ return noOfNodesNotHavingLeftChild;
+
+ }
+
+ // A recursive function to do left traversal of BST
+ //Also returns no of nodes not having left subchild
+ int traverseLeftNodesRec(TreeNode root, boolean fromLeft) {
+ int count = 0;
+ if (root != null) {
+ if (fromLeft == true)
+ System.out.print(root.getData() + " ");
+ if (root.getLeft() == null) {
+ count++;
+ }
+ return count = count + traverseLeftNodesRec(root.getLeft(), true) + traverseLeftNodesRec(root.getRight(), false);
+ }
+ return count;
+ }
+
+ public void traversePreOrder() {
+ traversePreOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do preorder traversal of BST
+ void traversePreOrderRec(TreeNode root) {
+ if (root != null) {
+ System.out.print(root.getData() + " ");
+ traversePreOrderRec(root.getLeft());
+ traversePreOrderRec(root.getRight());
+ }
+ }
+
+ public void traversePostOrder() {
+ traversePostOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do preorder traversal of BST
+ void traversePostOrderRec(TreeNode root) {
+ if (root != null) {
+ traversePostOrderRec(root.getLeft());
+ traversePostOrderRec(root.getRight());
+ System.out.print(root.getData() + " ");
+ }
+ }
+
+ //Searches Element
+ public boolean search(int data) {
+ TreeNode node = searchRec(root, data);
+ if (node == null) {
+ return false;
+ } else if (node.getData() == data) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public TreeNode searchRec(TreeNode root, int data) {
+ // Base Cases: root is null or key is present at root
+ if (root == null || root.getData() == data)
+ return root;
+
+ // val is greater than root's key
+ if (root.getData() > data)
+ return searchRec(root.getLeft(), data);
+
+ // val is less than root's key
+ return searchRec(root.getRight(), data);
+ }
+
+ public int count() {
+ return countRec(root);
+ }
+
+ // A recursive function to count total no of nodes of BST
+ public int countRec(TreeNode root) {
+ if (root == null)
+ return 0;
+ int count = 0;
+ count++;
+ count += (countRec(root.getLeft()) + countRec(root.getRight()));
+ return count;
+ }
+}
\ No newline at end of file
diff --git a/src/problem1/node/TreeNode.java b/src/problem1/node/TreeNode.java
index 80c857d..59f43af 100644
--- a/src/problem1/node/TreeNode.java
+++ b/src/problem1/node/TreeNode.java
@@ -1,10 +1,37 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:17 PM
- */
package problem1.node;
public class TreeNode {
-}
+ private int data;
+ private TreeNode left;
+ private TreeNode right;
+
+ public TreeNode(int data) {
+ this.data = data;
+ this.left = null;
+ this.right = null;
+ }
+
+ public int getData() {
+ return data;
+ }
+
+ public void setData(int data) {
+ this.data = data;
+ }
+
+ public TreeNode getLeft() {
+ return left;
+ }
+
+ public void setLeft(TreeNode left) {
+ this.left = left;
+ }
+
+ public TreeNode getRight() {
+ return right;
+ }
+
+ public void setRight(TreeNode right) {
+ this.right = right;
+ }
+}
\ No newline at end of file
diff --git a/src/problem2/main/MyMain.java b/src/problem2/main/MyMain.java
index 4d84403..14f1636 100644
--- a/src/problem2/main/MyMain.java
+++ b/src/problem2/main/MyMain.java
@@ -1,11 +1,26 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:15 PM
- */
package problem2.main;
+import problem2.mybst.MyBinarySearchTree;
// executable class
-// use problem1.mybst.MyBinarySearchTree class for creating binary tree
+
public class MyMain {
+ public static void main(String[] args) {
+ MyBinarySearchTree mytree = new MyBinarySearchTree();
+ mytree.insert(100);
+ mytree.insert(20);
+ mytree.insert(200);
+ mytree.insert(300);
+ mytree.insert(150);
+ mytree.insert(30);
+ mytree.insert(10);
+ System.out.println("PreOrder Traversal : ");
+ mytree.traversePreOrder();
+ System.out.println("InOrder Traversal : ");
+ mytree.traverseInOrder();
+ System.out.println("PostOrder Traversal : ");
+ mytree.traversePostOrder();
+ System.out.println("Condition A : Root element is placed at opposite end," + "\n" +
+ "i.e. in pre order root is the first element where as in post order root is the last element. is TRUE");
+ System.out.println("Condition B :They have common mid point,\n" +
+ "i.e. both the traversal will give same element at the mid position for odd number of nodes. is TRUE");
+ }
}
diff --git a/src/problem2/mybst/MyBinarySearchTree.java b/src/problem2/mybst/MyBinarySearchTree.java
new file mode 100644
index 0000000..e010b12
--- /dev/null
+++ b/src/problem2/mybst/MyBinarySearchTree.java
@@ -0,0 +1,138 @@
+package problem2.mybst;
+// to implement BinarySearchTree
+
+import problem2.node.TreeNode;
+
+public class MyBinarySearchTree {
+ private TreeNode root;
+
+ public MyBinarySearchTree() {
+ root = null;
+ }
+
+ public TreeNode getRoot() {
+ return root;
+ }
+
+
+ public void insert(int data) {
+ root = insertRecursive(root, data);
+ }
+
+ TreeNode insertRecursive(TreeNode root, int data) {
+ if (root == null) {
+ root = new TreeNode(data);
+ return root;
+ } else {
+ if (root.getData() > data) {
+ root.setLeft(insertRecursive(root.getLeft(), data));
+ } else if (root.getData() < data) {
+ root.setRight(insertRecursive(root.getRight(), data));
+ }
+ return root;
+ }
+ }
+
+
+ public void traverseInOrder() {
+ traverseInOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do inorder traversal of BST
+ void traverseInOrderRec(TreeNode root) {
+ if (root != null) {
+ traverseInOrderRec(root.getLeft());
+ System.out.print(root.getData() + " ");
+ traverseInOrderRec(root.getRight());
+ }
+ }
+
+ //prints only left nodes
+ public int traverseLeft() {
+ int noOfNodesNotHavingLeftChild = traverseLeftNodesRec(root, false);
+ System.out.println();
+ return noOfNodesNotHavingLeftChild;
+ }
+
+ // A recursive function to do left traversal of BST
+ //Also returns no of nodes not having left subchild
+ int traverseLeftNodesRec(TreeNode root, boolean fromLeft) {
+ int count = 0;
+ if (root != null) {
+ if (fromLeft == true)
+ System.out.print(root.getData() + " ");
+ if (root.getLeft() == null) {
+ count++;
+ }
+ return count = count + traverseLeftNodesRec(root.getLeft(), true) + traverseLeftNodesRec(root.getRight(), false);
+ }
+ return count;
+ }
+
+ public void traversePreOrder() {
+ traversePreOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do preorder traversal of BST
+ void traversePreOrderRec(TreeNode root) {
+ if (root != null) {
+ System.out.print(root.getData() + " ");
+ traversePreOrderRec(root.getLeft());
+ traversePreOrderRec(root.getRight());
+ }
+ }
+
+ public void traversePostOrder() {
+ traversePostOrderRec(root);
+ System.out.println();
+ }
+
+ // A recursive function to do preorder traversal of BST
+ void traversePostOrderRec(TreeNode root) {
+ if (root != null) {
+ traversePostOrderRec(root.getLeft());
+ traversePostOrderRec(root.getRight());
+ System.out.print(root.getData() + " ");
+ }
+ }
+
+ public boolean search(int data) {
+ TreeNode node = searchRec(root, data);
+ if (node == null) {
+ return false;
+ } else if (node.getData() == data) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public TreeNode searchRec(TreeNode root, int data) {
+ // Base Cases: root is null or key is present at root
+ if (root == null || root.getData() == data)
+ return root;
+
+ // val is greater than root's key
+ if (root.getData() > data)
+ return searchRec(root.getLeft(), data);
+
+ // val is less than root's key
+ return searchRec(root.getRight(), data);
+ }
+
+ public int count() {
+ return countRec(root);
+ }
+
+ // A recursive function to count total no of nodes of BST
+ public int countRec(TreeNode root) {
+ if (root == null)
+ return 0;
+ int count = 0;
+ count++;
+ count += (countRec(root.getLeft()) + countRec(root.getRight()));
+ return count;
+ }
+}
\ No newline at end of file
diff --git a/src/problem2/node/TreeNode.java b/src/problem2/node/TreeNode.java
new file mode 100644
index 0000000..606506f
--- /dev/null
+++ b/src/problem2/node/TreeNode.java
@@ -0,0 +1,37 @@
+package problem2.node;
+
+public class TreeNode {
+ private int data;
+ private TreeNode left;
+ private TreeNode right;
+
+ public TreeNode(int data) {
+ this.data = data;
+ this.left = null;
+ this.right = null;
+ }
+
+ public int getData() {
+ return data;
+ }
+
+ public void setData(int data) {
+ this.data = data;
+ }
+
+ public TreeNode getLeft() {
+ return left;
+ }
+
+ public void setLeft(TreeNode left) {
+ this.left = left;
+ }
+
+ public TreeNode getRight() {
+ return right;
+ }
+
+ public void setRight(TreeNode right) {
+ this.right = right;
+ }
+}
\ No newline at end of file
diff --git a/src/problem3/main/MyMain.java b/src/problem3/main/MyMain.java
index c719a1a..bb5f79d 100644
--- a/src/problem3/main/MyMain.java
+++ b/src/problem3/main/MyMain.java
@@ -1,11 +1,42 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:13 PM
- */
package problem3.main;
// executable class
// use problem5.student.Student class to create object of student
+
+import problem3.myqueue.MyPriorityQueue;
+import problem5.student.Student;
+
public class MyMain {
-}
+ public static void main(String[] args) {
+ MyPriorityQueue queue = new MyPriorityQueue();
+ queue.enqueue(new Student(7, "Virus Ninja"));
+ queue.display();
+ //System.out.println(queue.getSize());
+ //System.out.println(queue.peek().getStudent() + " element at front");
+ queue.enqueue(new Student(2, "Peter Maximoff"));
+ queue.display();
+ queue.enqueue(new Student(3, "Matt Murdock"));
+ queue.display();
+ queue.enqueue(new Student(5, "Sam Fisher"));
+ queue.display();
+ queue.enqueue(new Student(1, "Solid Snake"));
+ queue.display();
+ queue.enqueue(new Student(6, "Erik Lehnsherr"));
+ queue.display();
+ queue.enqueue(new Student(4, "Bruce Banner"));
+ queue.display();
+ System.out.println(queue.poll().getStudent() + " polled");
+ queue.display();
+ //System.out.println(queue.rear().getStudent() + " is rear");
+ System.out.println(queue.poll().getStudent() + " polled");
+ queue.display();
+ //System.out.println(queue.rear().getStudent() + " is rear");
+ System.out.println(queue.poll().getStudent() + " polled");
+ queue.display();
+ //System.out.println(queue.rear().getStudent() + " is rear");
+ System.out.println(queue.poll().getStudent() + " polled");
+ queue.display();
+ //System.out.println(queue.rear().getStudent() + " is rear");
+ System.out.println("The Size Queue is = " + queue.getSize());
+
+ }
+}
\ No newline at end of file
diff --git a/src/problem3/myqueue/MyPriorityQueue.java b/src/problem3/myqueue/MyPriorityQueue.java
index 5426bfa..f4efcf8 100644
--- a/src/problem3/myqueue/MyPriorityQueue.java
+++ b/src/problem3/myqueue/MyPriorityQueue.java
@@ -1,10 +1,123 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:15 PM
- */
package problem3.myqueue;
+import problem3.node.Node;
+import problem5.student.Student;
+
public class MyPriorityQueue {
+ // a field to refer rear end of queue
+ private Node rear;
+ // a field to refer front end of queue
+ private Node front;
+ private int size;// total number of elements in the queue
+
+ // constructor
+ public MyPriorityQueue() {
+ front = null;
+ rear = null;
+ size = 0;
+ }
+
+ // a method to check whether queue is empty
+ public boolean isEmpty() {
+ boolean response = false;
+ if (size == 0) {
+ response = true;
+ }
+ return response;
+ }
+
+
+ // a method to add a new element in queue
+ public void enqueue(Student element) {
+ Node node = new Node(element);
+ Node temp = front;
+ Node previous = temp;
+ if (isEmpty()) {
+ rear = node;
+ front = node;
+ size++;
+ } else {
+ while (temp.getStudent().getRollNo() < element.getRollNo() && temp != null) {
+ previous = temp;
+ temp = temp.getNext();
+ }
+ if (previous == front && temp == front) {
+ node.setNext(front);
+ front = node;
+ } else {
+ previous.setNext(node);
+ node.setNext(temp);
+ }
+
+ if (temp == null) {
+ rear = node;
+ }
+ size++;
+ }
+// if (isEmpty()) {
+// rear = node;
+// front = node;
+// size++;
+// } else {
+// rear.setNext(node);
+// rear = node;
+// size++;
+// }
+ //sortQueue();
+ }
+
+
+ public Node poll() {
+ Node res = null;
+ if (!isEmpty()) {
+ if (front.getNext() != null) {
+ res = front;
+ front = front.getNext();
+ res.setNext(null);
+ size--;
+ } else {
+ res = front;
+ //res.getNext(null);//redundant
+ front = null;
+ rear = null;
+ size--;
+ }
+ } else {
+ System.out.println("Queue UnderFlow");
+ }
+ return res;
+
+ }
+
+ // a method to get front element without removing it
+ public Node peek() {
+ Node response = null;
+ if (!isEmpty()) {
+ response = new Node(front.getStudent());
+ }
+ return response;
+ }
+
+
+ public void display() {
+ System.out.print("Display : ");
+ Node temp = front;
+ while (temp != null) {
+ System.out.print(temp.getStudent());
+ if (temp.getNext() != null) {
+ System.out.print("<---");
+ }
+ temp = temp.getNext();
+ }
+ System.out.println();
+ }
+
+ // a method to get size of queue
+ public int getSize() {
+ return size;
+ }
+
+ public Node rear() {
+ return rear;
+ }
}
diff --git a/src/problem3/node/Node.java b/src/problem3/node/Node.java
index 277d7ec..e9dbd18 100644
--- a/src/problem3/node/Node.java
+++ b/src/problem3/node/Node.java
@@ -1,10 +1,29 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:13 PM
- */
package problem3.node;
+import problem5.student.Student;
+
public class Node {
-}
+ private Student student;
+ private Node next;
+
+ public Node(Student student) {
+ this.student = student;
+ next = null;
+ }
+
+ public Student getStudent() {
+ return student;
+ }
+
+ public void setStudent(Student student) {
+ this.student = student;
+ }
+
+ public Node getNext() {
+ return next;
+ }
+
+ public void setNext(Node next) {
+ this.next = next;
+ }
+}
\ No newline at end of file
diff --git a/src/problem4/main/MyMain.java b/src/problem4/main/MyMain.java
index 10ebfa8..3b80d4c 100644
--- a/src/problem4/main/MyMain.java
+++ b/src/problem4/main/MyMain.java
@@ -1,11 +1,27 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:08 PM
- */
package problem4.main;
+
+import problem1.mybst.MyBinarySearchTree;
+import problem4.myqueue.MyQueue;
+
// executable class
// use problem1.mybst.MyBinarySearchTree class for creating binary tree
+
public class MyMain {
-}
+ public static void main(String[] args) {
+ MyBinarySearchTree mytree = new MyBinarySearchTree();
+ mytree.insert(50);
+ mytree.insert(30);
+ mytree.insert(20);
+ mytree.insert(40);
+ mytree.insert(70);
+ mytree.insert(60);
+ mytree.insert(80);
+ mytree.insert(90);
+ mytree.insert(10);
+ System.out.println("PreOrder Traversal : ");
+ mytree.traversePreOrder();
+ MyQueue queue = new MyQueue();
+ queue.storePreOrderSuccessor(mytree);
+ queue.display();
+ }
+}
\ No newline at end of file
diff --git a/src/problem4/myqueue/MyQueue.java b/src/problem4/myqueue/MyQueue.java
index 7e10cf6..666e532 100644
--- a/src/problem4/myqueue/MyQueue.java
+++ b/src/problem4/myqueue/MyQueue.java
@@ -1,11 +1,113 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:11 PM
- */
package problem4.myqueue;
// to create queue to store pre - order successor
+import problem1.mybst.MyBinarySearchTree;
+import problem1.node.TreeNode;
+import problem4.node.Node;
public class MyQueue {
-}
+ // a field to refer rear end of queue
+ private Node rear;
+ // a field to refer front end of queue
+ private Node front;
+ private int size;// total number of elements in the queue
+
+ // constructor
+ public MyQueue() {
+ front = null;
+ rear = null;
+ size = 0;
+ }
+
+ public void storePreOrderSuccessor(MyBinarySearchTree tree) {
+ TreeNode root = tree.getRoot();
+ storePreOrderSuccesssorRec(root);
+ }
+
+ // A recursive function to do preorder traversal of BST
+ void storePreOrderSuccesssorRec(TreeNode root) {
+ if (root != null) {
+ enqueue(root.getData());
+ storePreOrderSuccesssorRec(root.getLeft());
+ storePreOrderSuccesssorRec(root.getRight());
+ }
+ }
+
+
+ // a method to check whether queue is empty
+ public boolean isEmpty() {
+ boolean response = false;
+ if (size == 0) {
+ response = true;
+ }
+ return response;
+ }
+
+
+ // a method to add a new element in queue
+ public void enqueue(int element) {
+ Node node = new Node(element);
+ if (isEmpty()) {
+ rear = node;
+ front = node;
+ size++;
+ } else {
+ rear.setNext(node);
+ rear = node;
+ size++;
+ }
+ }
+
+ public Node dequeue() {
+ Node res = null;
+ if (!isEmpty()) {
+ if (front.getNext() != null) {
+ res = front;
+ front = front.getNext();
+ res.setNext(null);
+ size--;
+ } else {
+ res = front;
+ //res.getNext(null);//redundant
+ front = null;
+ rear = null;
+ size--;
+ }
+ } else {
+ System.out.println("Queue UnderFlow");
+ }
+ return res;
+
+ }
+
+ // a method to get front element without removing it
+ public Node peek() {
+ Node response = null;
+ if (!isEmpty()) {
+ response = new Node(front.getData());
+ }
+ return response;
+ }
+
+
+ public void display() {
+ System.out.print("Display Queue: ");
+ Node temp = front;
+ while (temp != null) {
+ System.out.print(temp.getData());
+ if (temp.getNext() != null) {
+ System.out.print("<---");
+ }
+ temp = temp.getNext();
+ }
+ System.out.println();
+ }
+
+ // a method to get size of queue
+ public int getSize() {
+ return size;
+ }
+
+ public Node rear() {
+ return rear;
+ }
+}
\ No newline at end of file
diff --git a/src/problem4/node/Node.java b/src/problem4/node/Node.java
new file mode 100644
index 0000000..1f74203
--- /dev/null
+++ b/src/problem4/node/Node.java
@@ -0,0 +1,27 @@
+package problem4.node;
+
+public class Node {
+ private int data;
+ private Node next;
+
+ public Node(int data) {
+ this.data = data;
+ next = null;
+ }
+
+ public int getData() {
+ return data;
+ }
+
+ public void setData(int data) {
+ this.data = data;
+ }
+
+ public Node getNext() {
+ return next;
+ }
+
+ public void setNext(Node next) {
+ this.next = next;
+ }
+}
\ No newline at end of file
diff --git a/src/problem5/circularqueue/MyCircularQueue.java b/src/problem5/circularqueue/MyCircularQueue.java
index 23ec7ea..5ac0cb7 100644
--- a/src/problem5/circularqueue/MyCircularQueue.java
+++ b/src/problem5/circularqueue/MyCircularQueue.java
@@ -1,10 +1,119 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:06 PM
- */
package problem5.circularqueue;
//to implement circular queue
+
+import problem5.node.Node;
+import problem5.student.Student;
+
public class MyCircularQueue {
-}
+ // a field to refer rear end of queue
+ private Node rear;
+ // a field to refer front end of queue
+ private Node front;
+ private int size;// total number of elements in the queue
+
+ // constructor
+ public MyCircularQueue() {
+ front = null;
+ rear = null;
+ size = 0;
+ }
+
+ public boolean processStudents() {
+ Node node = front;
+ Student stu = node.getStudent();
+ if (stu.getAppearingCount() > stu.getBackLogCounter()) {
+ stu.setAppearingCount(stu.getBackLogCounter());
+ }
+ stu.setBackLogCounter(stu.getBackLogCounter() - stu.getAppearingCount());
+ if (stu.getBackLogCounter() <= 0) {
+ dequeue();
+ System.out.println(stu + "'s Backlogs Cleared (" + stu.getAppearingCount() + " Appearances)!!!");
+ if (size == 0) return false;
+ } else {
+ System.out.println(stu + " Processed - Remaining Backlogs (" + stu.getAppearingCount() + " Appearances) = " + stu.getBackLogCounter());
+ }
+ return true;
+ }
+
+ // a method to check whether queue is empty
+ public boolean isEmpty() {
+ boolean response = false;
+ if (size == 0) {
+ response = true;
+ }
+ return response;
+ }
+
+ // a method to add a new element in queue
+ public void enqueue(Student element) {
+ Node node = new Node(element);
+ if (isEmpty()) {
+ rear = node;
+ front = node;
+ rear.setNext(front);
+ size++;
+ } else {
+ rear.setNext(node);
+ rear = node;
+ node.setNext(front);
+ size++;
+ }
+ }
+
+ public Node dequeue() {
+ Node res = null;
+ if (!isEmpty()) {
+ if (front.getNext() != front) {
+ res = front;
+ front = front.getNext();
+ rear.setNext(front);
+ res.setNext(null);
+ size--;
+ } else {
+ res = front;
+ //res.getNext(null);//redundant
+ front = null;
+ rear = null;
+ size--;
+ }
+ } else {
+ System.out.println("Queue UnderFlow");
+ }
+ return res;
+
+ }
+
+ // a method to get front element without removing it
+ public Node peek() {
+ Node response = null;
+ if (!isEmpty()) {
+ response = new Node(front.getStudent());
+ }
+ return response;
+ }
+
+
+ public void display() {
+ System.out.print("Display : ");
+ Node temp = front;
+ while (temp != rear) {
+ System.out.print(temp.getStudent());
+ if (temp.getNext() != null) {
+ System.out.print("<---");
+ }
+ temp = temp.getNext();
+ }
+ if (rear != null)
+ System.out.print(rear.getStudent());
+ System.out.println();
+ }
+
+ // a method to get size of queue
+ public int getSize() {
+ return size;
+ }
+
+ public Node rear() {
+ return rear;
+ }
+}
\ No newline at end of file
diff --git a/src/problem5/main/MyMain.java b/src/problem5/main/MyMain.java
index 9bdcc20..a3f1072 100644
--- a/src/problem5/main/MyMain.java
+++ b/src/problem5/main/MyMain.java
@@ -1,10 +1,31 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:06 PM
- */
package problem5.main;
//executable class
+
+import problem5.circularqueue.MyCircularQueue;
+import problem5.student.Student;
+
+import java.util.Random;
+
public class MyMain {
-}
+ public static void main(String[] args) {
+ Random rand = new Random();
+ MyCircularQueue queue = new MyCircularQueue();
+ System.out.println("Adding Students :\n---------------------------");
+ queue.enqueue(new Student(1, "virus", 2, rand.nextInt(2) + 1));
+ queue.display();
+ queue.enqueue(new Student(2, "ninja", 4, rand.nextInt(2) + 1));
+ queue.display();
+ queue.enqueue(new Student(3, "Magneto", 3, rand.nextInt(2) + 1));
+ queue.display();
+ queue.enqueue(new Student(4, "Hulk", 5, rand.nextInt(2) + 1));
+ queue.display();
+ queue.enqueue(new Student(5, "Professor", 0, rand.nextInt(2) + 1));
+ queue.display();
+ System.out.println("Processing Elements :\n---------------------------");
+ while (queue.processStudents() != false) {
+ //Processing Students Until Queue is empty
+ //EveryProcess the student clears 1-2 backlogs
+ }
+ queue.display();
+ }
+}
\ No newline at end of file
diff --git a/src/problem5/node/Node.java b/src/problem5/node/Node.java
index 64fd972..5b3489b 100644
--- a/src/problem5/node/Node.java
+++ b/src/problem5/node/Node.java
@@ -1,10 +1,31 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:06 PM
- */
package problem5.node;
+
+import problem5.student.Student;
+
// to define node properties
public class Node {
-}
+ private int data;
+ private Node next;
+ private Student student;
+
+ public Node(Student student) {
+ this.student = student;
+ next = null;
+ }
+
+ public Student getStudent() {
+ return student;
+ }
+
+ public void setStudent(Student student) {
+ this.student = student;
+ }
+
+ public Node getNext() {
+ return next;
+ }
+
+ public void setNext(Node next) {
+ this.next = next;
+ }
+}
\ No newline at end of file
diff --git a/src/problem5/student/Student.java b/src/problem5/student/Student.java
index 4d11bed..7ff79b3 100644
--- a/src/problem5/student/Student.java
+++ b/src/problem5/student/Student.java
@@ -1,10 +1,57 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Vaibhav
- * Date: 23-Mar-20
- * Time: 7:06 PM
- */
package problem5.student;
// to store student information and properties
public class Student {
-}
+ private int rollNo;
+ private String name;
+ private int backLogCounter;
+ private int appearingCount;
+
+ public Student(int rollNo, String name) {
+ this.rollNo = rollNo;
+ this.name = name;
+ }
+
+ public Student(int rollNo, String name, int backLogCounter, int appearingCount) {
+ this.rollNo = rollNo;
+ this.name = name;
+ this.backLogCounter = backLogCounter;
+ this.appearingCount = appearingCount;
+ }
+
+ public int getRollNo() {
+ return rollNo;
+ }
+
+ public void setRollNo(int rollNo) {
+ this.rollNo = rollNo;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name + " #" + rollNo;
+ }
+
+ public int getBackLogCounter() {
+ return backLogCounter;
+ }
+
+ public void setBackLogCounter(int backLogCounter) {
+ this.backLogCounter = backLogCounter;
+ }
+
+ public int getAppearingCount() {
+ return appearingCount;
+ }
+
+ public void setAppearingCount(int appearingCount) {
+ this.appearingCount = appearingCount;
+ }
+}
\ No newline at end of file