diff --git a/Exercise_1.java b/Exercise_1.java index 314a3cb45..2c6ddacc8 100644 --- a/Exercise_1.java +++ b/Exercise_1.java @@ -1,46 +1,85 @@ -class Stack { +/* +Space Complexity +O(n) n is the number of elements in the stack + +Time Complexity +isEmpty O(1) +push(int x) O(1) +pop() O(1) +peek() O(1) +*/ +class StackAsArray { //Please read sample.java file before starting. //Kindly include Time and Space complexity at top of each file - static final int MAX = 1000; - int top; - int a[] = new int[MAX]; // Maximum size of Stack - - boolean isEmpty() - { - //Write your code here - } - - Stack() - { - //Initialize your constructor - } - - boolean push(int x) - { + static final int MAX = 1000; + int top; + int a[] = new int[MAX]; // Maximum size of Stack + + boolean isEmpty() + { + //Write your code here + if(top==-1){ + System.out.println("Stack is Empty"); + return true; + } + return false; + } + + StackAsArray() + { + //Initialize your constructor + top = -1; + } + + boolean push(int x) + { //Check for stack Overflow //Write your code here - } - - int pop() - { + if(top==MAX-1){ + System.out.println("Stack Overflow"); + return false; + } + + top=top+1; + a[top]=x; + System.out.println(x+" is pushed onto the stack"); + return true; + } + + int pop() + { //If empty return 0 and print " Stack Underflow" //Write your code here - } - - int peek() - { + if(top==-1){ + System.out.println("Stack Underflow"); + return 0; + } + + int value=a[top]; + top=top-1; + return value; + } + + int peek() + { //Write your code here - } -} - -// Driver code -class Main { - public static void main(String args[]) - { - Stack s = new Stack(); - s.push(10); - s.push(20); - s.push(30); - System.out.println(s.pop() + " Popped from stack"); - } + if(top==-1){ + System.out.println("Stack Underflow"); + return 0; + } + return a[top]; + } +} + +// Driver code +class Main { + public static void main(String args[]) + { + // Stack + StackAsArray s = new StackAsArray(); + s.push(10); + s.push(20); + s.push(30); + System.out.println(s.pop() + " Popped from stack"); + } } diff --git a/Exercise_2.java b/Exercise_2.java index 5a9c4868c..eb2d301c8 100644 --- a/Exercise_2.java +++ b/Exercise_2.java @@ -1,52 +1,91 @@ -public class StackAsLinkedList { - - StackNode root; - - static class StackNode { - int data; - StackNode next; - - StackNode(int data) - { - //Constructor here - } - } - - - public boolean isEmpty() - { - //Write your code here for the condition if stack is empty. - } - - public void push(int data) - { - //Write code to push data to the stack. - } - - public int pop() - { +/* +Space Complexity +O(n) n is the number of elements in the stack + +Time Complexity +isEmpty O(1) +push(int data) O(1) +pop() O(1) +peek() O(1) +*/ +public class Exercise_2 { + + StackNode root; + + Exercise_2(){ + root=null; + } + + static class StackNode { + int data; + StackNode next; + + StackNode(int data) + { + //Constructor here + this.data=data; + this.next=null; + } + } + + + public boolean isEmpty() + { + //Write your code here for the condition if stack is empty. + if(root==null){ + System.out.println("Stack Underflow"); + return true; + } + return false; + } + + public void push(int data) + { + //Write code to push data to the stack. + StackNode newNode=new StackNode(data); + if(newNode==null){ + System.out.println("Stack Overflow"); + return; + } + newNode.next=root; + System.out.println(newNode.data+" is pushed onto the stack"); + root=newNode; + } + + public int pop() + { //If Stack Empty Return 0 and print "Stack Underflow" //Write code to pop the topmost element of stack. - //Also return the popped element - } - - public int peek() - { + //Also return the popped element + if(isEmpty()){ + return 0; + } + StackNode temp= root; + root=root.next; + return temp.data; + } + + public int peek() + { //Write code to just return the topmost element without removing it. - } - + if(isEmpty()){ + return 0; + } + return root.data; + } + //Driver code - public static void main(String[] args) - { - - StackAsLinkedList sll = new StackAsLinkedList(); - - sll.push(10); - sll.push(20); - sll.push(30); - - System.out.println(sll.pop() + " popped from stack"); - - System.out.println("Top element is " + sll.peek()); - } -} + public static void main(String[] args) + { + + Exercise_2 sll = new Exercise_2(); + + sll.push(10); + sll.push(20); + sll.push(30); + + System.out.println(sll.pop() + " popped from stack"); + + System.out.println("Top element is " + sll.peek()); + } +} diff --git a/Exercise_3.java b/Exercise_3.java index fb66d329d..0df3f700f 100644 --- a/Exercise_3.java +++ b/Exercise_3.java @@ -1,70 +1,94 @@ -import java.io.*; - -// Java program to implement -// a Singly Linked List -public class LinkedList { - - Node head; // head of list - - // Linked list Node. - // This inner class is made static - // so that main() can access it - static class Node { - - int data; - Node next; - - // Constructor - Node(int d) - { - //Write your code here - } - } - - // Method to insert a new node - public static LinkedList insert(LinkedList list, int data) - { - // Create a new node with given data - - // If the Linked List is empty, - // then make the new node as head - - // Else traverse till the last node - // and insert the new_node there - - // Insert the new_node at last node - // Return the list by head - - } - - // Method to print the LinkedList. - public static void printList(LinkedList list) - { - // Traverse through the LinkedList - - // Print the data at current node - - // Go to next node - } - - // Driver code - public static void main(String[] args) - { +// Java program to implement +// a Singly Linked List + +/* +Space Complexity +O(n) n is the number of elements in the linkedlist + +Time Complexity +insert O(n) n is the number of elements in the linkedlist to be traversed +printList O(n) n is the number of elements in the linkedlist +*/ +public class Exercise_3 { + + Node head; // head of list + + // Linked list Node. + // This inner class is made static + // so that main() can access it + static class Node { + + int data; + Node next; + + // Constructor + Node(int d) + { + //Write your code here + data=d; + next=null; + } + } + + // Method to insert a new node + public static Exercise_3 insert(Exercise_3 list, int data) + { + // Create a new node with given data + Node newNode=new Node(data); + + + // If the Linked List is empty, + // then make the new node as head + if(list.head==null){ + list.head=newNode; + } + else{ + // Else traverse till the last node + // and insert the new_node there + Node last=list.head; + while(last.next!=null){ + last=last.next; + } + + // Insert the new_node at last node + last.next=newNode; + } + + // Return the list by head + return list; + } + + // Method to print the LinkedList. + public static void printList(Exercise_3 list) + { + // Traverse through the LinkedList + Node node=list.head; + while(node!=null){ + // Print the data at current node + System.out.println(node.data); + // Go to next node + node=node.next; + } + } + + // Driver code + public static void main(String[] args) + { /* Start with the empty list. */ - LinkedList list = new LinkedList(); - - // - // ******INSERTION****** - // - - // Insert the values - list = insert(list, 1); - list = insert(list, 2); - list = insert(list, 3); - list = insert(list, 4); - list = insert(list, 5); - - // Print the LinkedList - printList(list); - } + Exercise_3 list = new Exercise_3(); + + // + // ******INSERTION****** + // + + // Insert the values + list = insert(list, 1); + list = insert(list, 2); + list = insert(list, 3); + list = insert(list, 4); + list = insert(list, 5); + + // Print the LinkedList + printList(list); + } } \ No newline at end of file