diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/.DS_Store differ diff --git a/Exercise_1.cpp b/Exercise_1.cpp deleted file mode 100644 index 381e274d5..000000000 --- a/Exercise_1.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#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/Exercise_1.cs b/Exercise_1.cs new file mode 100644 index 000000000..8ae5ead3e --- /dev/null +++ b/Exercise_1.cs @@ -0,0 +1,70 @@ +class Stack { + + // Time Complexity Except Push is O(1) , Push O(n) + // Space Complexity = O(n) + const int MAX = 1000; + int top; + int[] arr = new int[MAX]; // Maximum size of Stack + + public bool isEmpty() + { + //Write your code here + return top == -1; + } + + public Stack() + { + //Initialize constructor + top = -1; + } + + public void Resize() + { + int capacity = arr.Length * 2; + int[] newarr = new int[capacity]; + Array.Copy(arr, newarr, arr.Length); + arr = newarr; + + } + public void push(int x) + { + if (top == arr.Length - 1) + { + Resize(); + } + arr[++top] = x; + + } + + public int pop() + { + //If empty return 0 and print " Stack Underflow" + if (isEmpty()) + { + Console.Write(" Stack Underflow"); + return 0; + } + return arr[top--]; + } + + public int peek() + { + if (isEmpty()) + { + return 0; + } + return arr[top]; + } +} + +// Driver code +class Program { + public static void Main(String[] args) + { + Stack s = new Stack(); + s.push(10); + s.push(20); + s.push(30); + Console.Write(s.pop() + " Popped from stack"); + } +} diff --git a/Exercise_1.java b/Exercise_1.java deleted file mode 100644 index 314a3cb45..000000000 --- a/Exercise_1.java +++ /dev/null @@ -1,46 +0,0 @@ -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; - 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) - { - //Check for stack Overflow - //Write your code here - } - - int pop() - { - //If empty return 0 and print " Stack Underflow" - //Write your code here - } - - 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"); - } -} diff --git a/Exercise_1.js b/Exercise_1.js deleted file mode 100644 index 207189ea0..000000000 --- a/Exercise_1.js +++ /dev/null @@ -1,35 +0,0 @@ -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/Exercise_1.py b/Exercise_1.py deleted file mode 100644 index 532833f5d..000000000 --- a/Exercise_1.py +++ /dev/null @@ -1,24 +0,0 @@ -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/Exercise_2.cpp b/Exercise_2.cpp deleted file mode 100644 index 1eb3de9b9..000000000 --- a/Exercise_2.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#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/Exercise_2.cs b/Exercise_2.cs new file mode 100644 index 000000000..580b5224f --- /dev/null +++ b/Exercise_2.cs @@ -0,0 +1,75 @@ + +//Time Complexity - O(1) +//Space Complexity - O(n) +public class StackAsLinkedList +{ + + StackNode root; + + private class StackNode + { + public int data; + public StackNode next; + + public StackNode(int data) + { + //Constructor here + this.data = data; + next = null; + } + } + + + public bool isEmpty() + { + return root == null; + } + + public void push(int data) + { + //Write code to push data to the stack. + StackNode st = new StackNode(data); + st.next = root; + root = st; + } + + 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 + if (isEmpty()) + { + Console.WriteLine("Stack Underflow"); + return 0; + } + int popped = root.data; + root = root.next; + return popped; + } + + public int peek() + { + //Write code to just return the topmost element without removing it. + if (isEmpty()) + { + Console.WriteLine("Stack Underflow"); + 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); + + Console.Write(sll.pop() + " popped from stack"); + + Console.Write("Top element is " + sll.peek()); + } +} 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_2.js b/Exercise_2.js deleted file mode 100644 index 2e3216f94..000000000 --- a/Exercise_2.js +++ /dev/null @@ -1,36 +0,0 @@ -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/Exercise_2.py b/Exercise_2.py deleted file mode 100644 index b11492215..000000000 --- a/Exercise_2.py +++ /dev/null @@ -1,32 +0,0 @@ - -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/Exercise_3.cpp b/Exercise_3.cpp deleted file mode 100644 index f34d89ac1..000000000 --- a/Exercise_3.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#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/Exercise_3.cs b/Exercise_3.cs new file mode 100644 index 000000000..c314632c4 --- /dev/null +++ b/Exercise_3.cs @@ -0,0 +1,90 @@ + +//Time Complexity - O(n) +//Space Complexity - O(n) +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; + public Node next; + + // Constructor + public Node(int d) + { + //Write your code here + data = d; + 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; + } + // Else traverse till the last node + // and insert the new_node there + else + { + Node cur = list.head; + while (cur.next != null) + { + cur = cur.next; + } + cur.next = newNode; + } + // Insert the new_node at last node + // Return the list by head + return list; + } + + // 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 + Node cur = list.head; + while (cur != null) + { + Console.WriteLine(cur.data); + cur = cur.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/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/Exercise_3.js b/Exercise_3.js deleted file mode 100644 index d1511f80e..000000000 --- a/Exercise_3.js +++ /dev/null @@ -1,49 +0,0 @@ -// 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/Exercise_3.py b/Exercise_3.py deleted file mode 100644 index a5d466b59..000000000 --- a/Exercise_3.py +++ /dev/null @@ -1,32 +0,0 @@ -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/PreCourse-1 b/PreCourse-1 new file mode 160000 index 000000000..45e4a7270 --- /dev/null +++ b/PreCourse-1 @@ -0,0 +1 @@ +Subproject commit 45e4a7270718f96153bfd32826a98148ad70efdb