diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 000000000..13566b81b
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 000000000..bcb5da6c3
--- /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..404ed95c5 100644
--- a/Exercise_1.java
+++ b/Exercise_1.java
@@ -1,6 +1,8 @@
class Stack {
//Please read sample.java file before starting.
//Kindly include Time and Space complexity at top of each file
+ // Time Complexity: o(1)
+ // Space Complexity: o(MAX);
static final int MAX = 1000;
int top;
int a[] = new int[MAX]; // Maximum size of Stack
@@ -8,28 +10,47 @@ class Stack {
boolean isEmpty()
{
//Write your code here
+ return top == -1;
}
Stack()
{
//Initialize your constructor
+ top = -1;
}
boolean push(int x)
{
//Check for stack Overflow
//Write your code here
+ if (top >= MAX -1) {
+ System.out.println("Stack Overflow");
+ return false;
+ }
+
+ a[++top] = x;
+ return true;
}
int pop()
{
//If empty return 0 and print " Stack Underflow"
//Write your code here
+ if (top < 0) {
+ System.out.println("Stack Underflow");
+ return 0;
+ }
+ return a[top--];
}
int peek()
{
//Write your code here
+ if (top < 0) {
+ System.out.println("Stack is empty");
+ return -1;
+ }
+ return a[top];
}
}
diff --git a/Exercise_2.java b/Exercise_2.java
index 5a9c4868c..926bd970d 100644
--- a/Exercise_2.java
+++ b/Exercise_2.java
@@ -1,52 +1,75 @@
-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()
- {
+class StackAsLinkedList {
+ // Time Complexity: o(1)
+ // Space Complexity: o(N) where N being size of the data;
+ StackNode root;
+
+ 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.
+ return root == null;
+ }
+
+ public void push(int data)
+ {
+ //Write code to push data to the stack.
+ StackNode newNode = new StackNode(data);
+ if (isEmpty()) {
+ root = newNode;
+ } else {
+ newNode.next = root;
+ 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()) {
+ System.out.println("Stack Underflow");
+ return 0;
+ }
+ int poped = root.data;
+ root = root.next;
+ return poped;
+ }
+
+ public int peek()
+ {
//Write code to just return the topmost element without removing it.
- }
-
+ if (isEmpty()) {
+ System.out.println("Stack is Empty");
+ return -1;
+ }
+ 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)
+ {
+
+ 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
index fb66d329d..99239e444 100644
--- a/Exercise_3.java
+++ b/Exercise_3.java
@@ -1,70 +1,84 @@
-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
+import java.io.*;
- // 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
+class LinkedList {
+ // Time Complexity: o(1) // Reduce from o(N) to o(1) by introducing tail
+ // Space Complexity: o(N) where N being size of the data;
+ Node head; // head of list
+ Node tail; // Tail of the list to improve insertion
+
+ // 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
+ this.data = d;
+ this.next = null;
+ }
+ }
+
+ // Method to insert a new node
+ public static LinkedList insert(LinkedList 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;
+ // first node is both head and tail
+ list.tail = newNode;
+ } else {
+ // link to end
+ list.tail.next = newNode;
+ // advance tail
+ list.tail = newNode;
+ }
+ // Return the list by head
+ return list;
+ }
+
+ // Method to print the LinkedList.
+ public static void printList(LinkedList list)
+ {
+ // Traverse through the LinkedList
+ Node currNode = list.head;
+ while (currNode != null) {
+ // Print the data at current node
+ System.out.print(currNode.data + "->");
+ // Go to next node
+ currNode = currNode.next;
+ }
+ System.out.println("Done!");
+ }
+
+ // 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);
- }
+ 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/Main.class b/Main.class
new file mode 100644
index 000000000..f8b45a2bc
Binary files /dev/null and b/Main.class differ
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/Stack.class b/Stack.class
new file mode 100644
index 000000000..4015edcea
Binary files /dev/null and b/Stack.class differ
diff --git a/out/production/PreCourse-1/.idea/.gitignore b/out/production/PreCourse-1/.idea/.gitignore
new file mode 100644
index 000000000..13566b81b
--- /dev/null
+++ b/out/production/PreCourse-1/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.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..bcb5da6c3
--- /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..381e274d5
--- /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..1eb3de9b9
--- /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..f34d89ac1
--- /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..ea728a175
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..20efb8b29
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..ee1209837
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..428bbd16b
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..0f8326cfb
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..08e1b8344
Binary files /dev/null and b/out/production/PreCourse-1/StackAsLinkedList.class differ