diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 000000000..a0ccf77bc
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Environment-dependent path to Maven home directory
+/mavenHomeManager.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 000000000..89ee75358
--- /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 000000000..a866e1a9f
--- /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 000000000..35eb1ddfb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Exercise_1.java b/Exercise_1.java
index 314a3cb45..99c2385ec 100644
--- a/Exercise_1.java
+++ b/Exercise_1.java
@@ -1,4 +1,12 @@
-class Stack {
+// Time Complexity : O(1) for push(), pop(), peek(), and isEmpty()
+// Space Complexity : O(n) for storing n elements in the stack
+// Did this code successfully run on Leetcode :
+// Any problem you faced while coding this : None
+
+
+// Your code here along with comments explaining your approach
+
+class Stack {
//Please read sample.java file before starting.
//Kindly include Time and Space complexity at top of each file
static final int MAX = 1000;
@@ -6,30 +14,62 @@ class Stack {
int a[] = new int[MAX]; // Maximum size of Stack
boolean isEmpty()
- {
- //Write your code here
+ {
+// return true if stack is empty
+ if(top == -1){
+ return true;
+ } else {
+ return false;
+ }
}
Stack()
{
- //Initialize your constructor
- }
-
+ //Initialize your constructor
+ top = -1;
+ }
+
boolean push(int x)
- {
+ {
+// insert an element on top of stack
//Check for stack Overflow
//Write your code here
+ if (top == MAX-1) {
+ System.out.println("Stack Overflow");
+ return false;
+ } else {
+ top++;
+ a[top] = x;
+ return true;
+ }
}
int pop()
- {
+ {
+// pop the topmost element of stack
//If empty return 0 and print " Stack Underflow"
//Write your code here
+ if (top == -1) {
+ System.out.println("Stack Underflow");
+ return 0;
+ } else {
+ int ele = a[top];
+ top--;
+ return ele;
+ }
+
+
}
int peek()
- {
+ {
+// return the topmost element of stack
//Write your code here
+ if (top == -1) {
+ return 0;
+ } else {
+ return a[top];
+ }
}
}
diff --git a/Exercise_2.java b/Exercise_2.java
deleted file mode 100644
index 5a9c4868c..000000000
--- a/Exercise_2.java
+++ /dev/null
@@ -1,52 +0,0 @@
-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()
- {
- //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()
- {
- //Write code to just return the topmost element without removing it.
- }
-
- //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());
- }
-}
diff --git a/Exercise_3.java b/Exercise_3.java
deleted file mode 100644
index fb66d329d..000000000
--- a/Exercise_3.java
+++ /dev/null
@@ -1,70 +0,0 @@
-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)
- {
- /* 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);
- }
-}
\ No newline at end of file
diff --git a/LinkedList.java b/LinkedList.java
new file mode 100644
index 000000000..d8c7ec7be
--- /dev/null
+++ b/LinkedList.java
@@ -0,0 +1,88 @@
+// Time Complexity : insert() -> O(1), printList() -> O(n)
+// Space Complexity : O(n)
+// Did this code successfully run on Leetcode :
+// Any problem you faced while coding this : No
+
+// Your code here along with comments explaining your approach
+
+import java.io.*;
+
+// Java program to implement
+// a Singly Linked List
+public class LinkedList {
+
+ Node head;// head of list
+ Node tail;//tail 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)
+ {
+ this.data = 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
+ Node node = new Node(data);
+
+ // If the Linked List is empty,
+ // then make the new node as head
+ // Else append the new node at the end and update tail
+ if (list.head == null) {
+ list.head = node;
+ list.tail = node;
+ return list;
+ } else {
+ list.tail.next = node;
+ list.tail = node;
+ return list;
+ }
+
+
+ }
+
+ // Method to print the LinkedList.
+ public static void printList(LinkedList list)
+ {
+// assign head to a temp node
+// print data of each node until temp is null
+ Node temp = list.head;
+ while (temp!= null) {
+ System.out.println(temp.data);
+ temp = temp.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);
+ }
+}
\ No newline at end of file
diff --git a/PreCourse-1.iml b/PreCourse-1.iml
new file mode 100644
index 000000000..b107a2dd8
--- /dev/null
+++ b/PreCourse-1.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/StackAsLinkedList.java b/StackAsLinkedList.java
new file mode 100644
index 000000000..e34e08450
--- /dev/null
+++ b/StackAsLinkedList.java
@@ -0,0 +1,80 @@
+// Time Complexity : O(1) for all main operations (push, pop, peek, isEmpty)
+// Space Complexity : O(n) for n elements in the stack
+// Did this code successfully run on Leetcode :
+// Any problem you faced while coding this : No
+
+public class StackAsLinkedList {
+
+ StackNode root;
+
+ static class StackNode {
+ int data;
+ StackNode next;
+
+ StackNode(int data)
+ {
+ //Constructor here
+ this.data = data;
+ }
+ }
+
+
+ public boolean isEmpty()
+ {
+ return root == null;
+ //Write your code here for the condition if stack is empty.
+ }
+
+ public void push(int data)
+ {
+// push data to stack from the front
+// newly created node will point to current root
+ StackNode node = new StackNode(data);
+ if (root == null) {
+ root = node;
+ } else {
+ node.next = root;
+ root = node;
+ }
+ //Write code to push data to the stack.
+ }
+
+ public int pop()
+ {
+// pop the root node by assigning root to root.next
+ if (root == null) {
+ System.out.println("Stack Underflow");
+ return 0;
+ } else {
+ int ele = root.data;
+ root = root.next;
+ return ele;
+ }
+ }
+
+ public int peek()
+ {
+// return the topmost element
+ if (root == null) {
+ return 0;
+ } else {
+ return root.data;
+ }
+ //Write code to just return the topmost element without removing it.
+ }
+
+ //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());
+ }
+}
diff --git a/out/production/PreCourse-1/.idea/.gitignore b/out/production/PreCourse-1/.idea/.gitignore
new file mode 100644
index 000000000..a0ccf77bc
--- /dev/null
+++ b/out/production/PreCourse-1/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Environment-dependent path to Maven home directory
+/mavenHomeManager.xml
diff --git a/out/production/PreCourse-1/.idea/misc.xml b/out/production/PreCourse-1/.idea/misc.xml
new file mode 100644
index 000000000..89ee75358
--- /dev/null
+++ b/out/production/PreCourse-1/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/PreCourse-1/.idea/modules.xml b/out/production/PreCourse-1/.idea/modules.xml
new file mode 100644
index 000000000..a866e1a9f
--- /dev/null
+++ b/out/production/PreCourse-1/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/PreCourse-1/.idea/vcs.xml b/out/production/PreCourse-1/.idea/vcs.xml
new file mode 100644
index 000000000..35eb1ddfb
--- /dev/null
+++ b/out/production/PreCourse-1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/PreCourse-1/Exercise_1.cpp b/out/production/PreCourse-1/Exercise_1.cpp
new file mode 100644
index 000000000..2fa5da66c
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_1.cpp
@@ -0,0 +1,54 @@
+#include
+
+using namespace std;
+
+#define MAX 1000
+
+class Stack {
+ //Please read sample.java file before starting.
+ //Kindly include Time and Space complexity at top of each file
+ int top;
+
+public:
+ int a[MAX]; // Maximum size of Stack
+
+ Stack() { //Constructor here }
+ bool push(int x);
+ int pop();
+ int peek();
+ bool isEmpty();
+};
+
+bool Stack::push(int x)
+{
+ //Your code here
+ //Check Stack overflow as well
+}
+
+int Stack::pop()
+{
+ //Your code here
+ //Check Stack Underflow as well
+}
+int Stack::peek()
+{
+ //Your code here
+ //Check empty condition too
+}
+
+bool Stack::isEmpty()
+{
+ //Your code here
+}
+
+// Driver program to test above functions
+int main()
+{
+ class Stack s;
+ s.push(10);
+ s.push(20);
+ s.push(30);
+ cout << s.pop() << " Popped from stack\n";
+
+ return 0;
+}
diff --git a/out/production/PreCourse-1/Exercise_1.js b/out/production/PreCourse-1/Exercise_1.js
new file mode 100644
index 000000000..207189ea0
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_1.js
@@ -0,0 +1,35 @@
+class Stack {
+ //Please read sample.java file before starting.
+ //Kindly include Time and Space complexity at top of each file
+
+ constructor() {
+ //Initialize your constructor
+ this.MAX = 1000;
+ this.top = -1;
+ this.a = new Array(this.MAX);
+ }
+
+ function isEmpty() {
+ //Write your code here
+ }
+
+ function push(x) {
+ //Check for stack Overflow
+ //Write your code here
+ }
+
+ function pop() {
+ //If empty return 0 and print " Stack Underflow"
+ //Write your code here
+ }
+
+ function peek() {
+ //Write your code here
+ }
+}
+
+let s = new Stack();
+s.push(10);
+s.push(20);
+s.push(30);
+console.log(s.pop() + " Popped from stack");
diff --git a/out/production/PreCourse-1/Exercise_1.py b/out/production/PreCourse-1/Exercise_1.py
new file mode 100644
index 000000000..532833f5d
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_1.py
@@ -0,0 +1,24 @@
+class myStack:
+ #Please read sample.java file before starting.
+ #Kindly include Time and Space complexity at top of each file
+ def __init__(self):
+
+ def isEmpty(self):
+
+ def push(self, item):
+
+ def pop(self):
+
+
+ def peek(self):
+
+ def size(self):
+
+ def show(self):
+
+
+s = myStack()
+s.push('1')
+s.push('2')
+print(s.pop())
+print(s.show())
diff --git a/out/production/PreCourse-1/Exercise_2.cpp b/out/production/PreCourse-1/Exercise_2.cpp
new file mode 100644
index 000000000..054ad0d1b
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_2.cpp
@@ -0,0 +1,52 @@
+#include
+using namespace std;
+
+// A structure to represent a stack
+class StackNode {
+public:
+ int data;
+ StackNode* next;
+};
+
+StackNode* newNode(int data)
+{
+ StackNode* stackNode = new StackNode();
+ stackNode->data = data;
+ stackNode->next = NULL;
+ return stackNode;
+}
+
+int isEmpty(StackNode* root)
+{
+ //Your code here
+}
+
+void push(StackNode** root, int data)
+{
+ //Your code here
+}
+
+int pop(StackNode** root)
+{
+ //Your code here
+}
+
+int peek(StackNode* root)
+{
+ //Your code here
+}
+
+int main()
+{
+ StackNode* root = NULL;
+
+ push(&root, 10);
+ push(&root, 20);
+ push(&root, 30);
+
+ cout << pop(&root) << " popped from stack\n";
+
+ cout << "Top element is " << peek(root) << endl;
+
+ return 0;
+}
\ No newline at end of file
diff --git a/out/production/PreCourse-1/Exercise_2.js b/out/production/PreCourse-1/Exercise_2.js
new file mode 100644
index 000000000..2e3216f94
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_2.js
@@ -0,0 +1,36 @@
+class StackAsLinkedList {
+
+ static stackNode = class {
+
+ constructor(d) {
+ //Constructor here
+ this.data = d;
+ this.next = null;
+ }
+ }
+
+ function isEmpty() {
+ //Write your code here for the condition if stack is empty.
+ }
+
+ function push(data) {
+ //Write code to push data to the stack.
+ }
+
+ function pop() {
+ //If Stack Empty Return 0 and print "Stack Underflow"
+ //Write code to pop the topmost element of stack.
+ //Also return the popped element
+ }
+
+ function peek() {
+ //Write code to just return the topmost element without removing it.
+ }
+}
+//Driver code
+const sll = new StackAsLinkedList();
+sll.push(10);
+sll.push(20);
+sll.push(30);
+console.log(sll.pop() + " popped from stack");
+console.log("Top element is " + sll.peek());
diff --git a/out/production/PreCourse-1/Exercise_2.py b/out/production/PreCourse-1/Exercise_2.py
new file mode 100644
index 000000000..b11492215
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_2.py
@@ -0,0 +1,32 @@
+
+class Node:
+ def __init__(self, data):
+ self.data = data
+ self.next = None
+
+class Stack:
+ def __init__(self):
+
+ def push(self, data):
+
+ def pop(self):
+
+a_stack = Stack()
+while True:
+ #Give input as string if getting an EOF error. Give input like "push 10" or "pop"
+ print('push ')
+ print('pop')
+ print('quit')
+ do = input('What would you like to do? ').split()
+ #Give input as string if getting an EOF error. Give input like "push 10" or "pop"
+ operation = do[0].strip().lower()
+ if operation == 'push':
+ a_stack.push(int(do[1]))
+ elif operation == 'pop':
+ popped = a_stack.pop()
+ if popped is None:
+ print('Stack is empty.')
+ else:
+ print('Popped value: ', int(popped))
+ elif operation == 'quit':
+ break
diff --git a/out/production/PreCourse-1/Exercise_3.cpp b/out/production/PreCourse-1/Exercise_3.cpp
new file mode 100644
index 000000000..40baf9cef
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_3.cpp
@@ -0,0 +1,80 @@
+#include
+using namespace std;
+
+// A linked list node (changes)
+class Node
+{
+ public:
+ int data;
+ Node *next;
+};
+
+/* Given a reference (pointer to pointer)
+to the head of a list and an int, inserts
+a new node on the front of the list. */
+void push(Node** head_ref, int new_data)
+{
+ /* 1. allocate node */
+
+ /* 2. put in the data */
+
+ /* 3. Make next of new node as head */
+
+ /* 4. move the head to point to the new node */
+}
+
+/* Given a node prev_node, insert a new node after the given
+prev_node */
+void insertAfter(Node* prev_node, int new_data)
+{
+ /*1. check if the given prev_node is NULL */
+
+ /* 2. allocate new node */
+
+ /* 3. put in the data */
+
+ /* 4. Make next of new node as next of prev_node */
+
+ /* 5. move the next of prev_node as new_node */
+}
+
+/* Given a reference (pointer to pointer) to the head
+of a list and an int, appends a new node at the end */
+void append(Node** head_ref, int new_data)
+{
+ /* 1. allocate node */
+
+ /* 2. put in the data */
+
+ /* 3. This new node is going to be
+ the last node, so make next of
+ it as NULL*/
+
+ /* 4. If the Linked List is empty,
+ then make the new node as head */
+
+ /* 5. Else traverse till the last node */
+
+ /* 6. Change the next of last node */
+}
+
+// This function prints contents of
+// linked list starting from head
+void printList(Node *node)
+{
+ //Your code here
+}
+
+/* Driver code*/
+int main()
+{
+ Node* head = NULL;
+ append(&head, 6);
+ push(&head, 7);
+ push(&head, 1);
+ append(&head, 4);
+ insertAfter(head->next, 8);
+ cout<<"Created Linked list is: ";
+ printList(head);
+ return 0;
+}
\ No newline at end of file
diff --git a/out/production/PreCourse-1/Exercise_3.js b/out/production/PreCourse-1/Exercise_3.js
new file mode 100644
index 000000000..d1511f80e
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_3.js
@@ -0,0 +1,49 @@
+// Java program to implement
+// a Singly Linked List
+class LinkedList {
+ constructor() {
+ this.head = null;
+ }
+ // Linked list Node.
+ static Node = class {
+ constructor(d) {
+ this.data = d;
+ this.next = null;
+ }
+ }
+
+ // Method to insert a new node
+ function insert(list, 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.
+ function printList(list) {
+ // Traverse through the LinkedList
+
+ // Print the data at current node
+
+ // Go to next node
+ }
+}
+ // Driver code
+ /* Start with the empty list. */
+ let list = new LinkedList();
+
+ // ******INSERTION******
+ // Insert the values
+ list.insert(list, 1);
+ list.insert(list, 2);
+ list.insert(list, 3);
+ list.insert(list, 4);
+ // Print the LinkedList
+ list.printList(list);
diff --git a/out/production/PreCourse-1/Exercise_3.py b/out/production/PreCourse-1/Exercise_3.py
new file mode 100644
index 000000000..a5d466b59
--- /dev/null
+++ b/out/production/PreCourse-1/Exercise_3.py
@@ -0,0 +1,32 @@
+class ListNode:
+ """
+ A node in a singly-linked list.
+ """
+ def __init__(self, data=None, next=None):
+
+class SinglyLinkedList:
+ def __init__(self):
+ """
+ Create a new singly-linked list.
+ Takes O(1) time.
+ """
+ self.head = None
+
+ def append(self, data):
+ """
+ Insert a new element at the end of the list.
+ Takes O(n) time.
+ """
+
+ def find(self, key):
+ """
+ Search for the first element with `data` matching
+ `key`. Return the element or `None` if not found.
+ Takes O(n) time.
+ """
+
+ def remove(self, key):
+ """
+ Remove the first occurrence of `key` in the list.
+ Takes O(n) time.
+ """
diff --git a/out/production/PreCourse-1/LinkedList$Node.class b/out/production/PreCourse-1/LinkedList$Node.class
new file mode 100644
index 000000000..35130dbcd
Binary files /dev/null and b/out/production/PreCourse-1/LinkedList$Node.class differ
diff --git a/out/production/PreCourse-1/LinkedList.class b/out/production/PreCourse-1/LinkedList.class
new file mode 100644
index 000000000..7ad38114e
Binary files /dev/null and b/out/production/PreCourse-1/LinkedList.class differ
diff --git a/out/production/PreCourse-1/Main.class b/out/production/PreCourse-1/Main.class
new file mode 100644
index 000000000..404e37347
Binary files /dev/null and b/out/production/PreCourse-1/Main.class differ
diff --git a/out/production/PreCourse-1/PreCourse-1.iml b/out/production/PreCourse-1/PreCourse-1.iml
new file mode 100644
index 000000000..b107a2dd8
--- /dev/null
+++ b/out/production/PreCourse-1/PreCourse-1.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/PreCourse-1/README.md b/out/production/PreCourse-1/README.md
new file mode 100644
index 000000000..1e1abed69
--- /dev/null
+++ b/out/production/PreCourse-1/README.md
@@ -0,0 +1,11 @@
+# PreCourse_1
+
+# All Instructions are already provided in the respective files.
+
+Exercise_1 : Implement Stack using Array.
+
+Exercise_2 : Implement Stack using Linked List.
+
+Exercise_3 : Implement Singly Linked List.
+
+*After completing the project kindly submit a pull request*
diff --git a/out/production/PreCourse-1/Stack.class b/out/production/PreCourse-1/Stack.class
new file mode 100644
index 000000000..e5dd555bd
Binary files /dev/null and b/out/production/PreCourse-1/Stack.class differ
diff --git a/out/production/PreCourse-1/StackAsLinkedList$StackNode.class b/out/production/PreCourse-1/StackAsLinkedList$StackNode.class
new file mode 100644
index 000000000..9e48db62b
Binary files /dev/null and b/out/production/PreCourse-1/StackAsLinkedList$StackNode.class differ
diff --git a/out/production/PreCourse-1/StackAsLinkedList.class b/out/production/PreCourse-1/StackAsLinkedList.class
new file mode 100644
index 000000000..36f453646
Binary files /dev/null and b/out/production/PreCourse-1/StackAsLinkedList.class differ