From e5e34711229548d93c86bd25c8e836e8a9af536f Mon Sep 17 00:00:00 2001 From: Deep Date: Fri, 9 Oct 2020 23:20:52 +0530 Subject: [PATCH 1/2] Added Some Search Data Structures --- .DS_Store | Bin 10244 -> 0 bytes AVL_Tree/AVL_Tree.c | 301 ------------ AVL_Tree/AVL_Tree.txt | 69 --- .../Travelling_Salesman_Problem.cpp | 85 ---- .../chained-matrix-multiplication.c | 67 --- .../Dynamic Programming/coin_change.cpp | 53 --- Algorithms/Dynamic Programming/edit_dist.cpp | 65 --- Algorithms/Dynamic Programming/eggdrop.cpp | 39 -- .../Dynamic Programming/knapsack-0-1.java | 40 -- .../Dynamic Programming/largest_area.cpp | 66 --- Algorithms/Dynamic Programming/lcs.cpp | 51 -- Algorithms/Dynamic Programming/lis.cpp | 64 --- .../longest_palindromic_subsequence.cpp | 37 -- .../longest_palindromic_substring.cpp | 85 ---- .../Dynamic Programming/longest_path.cpp | 61 --- .../longest_repeating_subsequence.cpp | 32 -- .../longestcommonsubseq.py | 33 -- .../longestconsecutivesubseq.py | 14 - .../longestincreasingsubseq.py | 12 - .../Dynamic Programming/maximumsumsubseq.py | 12 - Algorithms/Dynamic Programming/min_coins.cpp | 66 --- Algorithms/Dynamic Programming/min_sum.cpp | 50 -- .../Dynamic Programming/minimumCostPath.py | 59 --- Algorithms/Dynamic Programming/n lis.cpp | 54 --- Algorithms/Dynamic Programming/nthuglyno.py | 21 - .../Dynamic Programming/partition_2_sets.cpp | 53 --- .../rod_cutting_interviewbit.cpp | 60 --- .../Dynamic Programming/same_sum_subset.cpp | 47 -- Algorithms/Graph Algorithms/BFS.cpp | 95 ---- Algorithms/Graph Algorithms/BFS.dart | 50 -- Algorithms/Graph Algorithms/BFS.java | 70 --- Algorithms/Graph Algorithms/DFS.dart | 40 -- Algorithms/Graph Algorithms/input-graph.txt | 200 -------- .../Graph Algorithms/kargers_min_cut.py | 106 ----- Algorithms/Kadane.java | 30 -- Algorithms/README.md | 1 - Algorithms/SieveOfEratosthenes.cpp | 34 -- Algorithms/SieveOfEratosthenes.java | 30 -- Algorithms/gcd.c | 20 - BT_To_BST/BT_To_BST.c | 164 ------- BT_To_BST/BT_To_BST_OUTPUT.txt | 33 -- Backtracking/NQueen.cpp | 79 ---- Backtracking/rat_in_a_maze.cpp | 55 --- Betting_Game/Betting_Game.c | 86 ---- Betting_Game/Betting_Game_Output.txt | 66 --- Binary Tree in cpp/BinaryTree.cpp | 67 --- Binry_Search_Tree/Binary_Search_Tree.c | 276 ----------- Binry_Search_Tree/Binary_Search_Tree.js | 103 ----- Binry_Search_Tree/Binary_Search_Tree.py | 37 -- .../Binary_Search_tree_Output.txt | 71 --- Binry_Search_Tree/CheckBST.java | 34 -- Binry_Search_Tree/CorrectBST.java | 56 --- Binry_Search_Tree/FindAncestor.java | 74 --- Binry_Search_Tree/InorderSuccessor.java | 52 --- Binry_Search_Tree/LargestBST.java | 89 ---- Binry_Search_Tree/LevelOrder.java | 76 --- Binry_Search_Tree/MorrisTraversal.java | 64 --- Binry_Search_Tree/Node.java | 12 - Binry_Search_Tree/PathFromRootToNode.java | 63 --- C/Searching/BinarySearch.c | 42 -- C/Searching/InterpolationSearch.c | 57 --- C/Searching/LinearSearch.c | 26 -- C/Searching/TernarySearch.C | 52 --- C/Sorting/Count Sort.c | 49 -- CONTRIBUTING.md | 26 -- Car_Shop/Car_Shop.c | 118 ----- Car_Shop/Car_Shop_Output.txt | 58 --- .../Circulardoublylinkedlist.cpp | 437 ------------------ CircularQueueJava/CircularQueue.class | Bin 3207 -> 0 bytes CircularQueueJava/CircularQueue.java | 158 ------- .../Circular_Dobely_Link_List_Output.txt | 86 ---- .../Circulr_Dobely_Link_List.c | 299 ------------ Circular_Link_List/Circular_Link_List.c | 117 ----- .../Circular_Link_List_Output.txt | 46 -- Circular_Link_List/josephus_problem.c | 243 ---------- Circular_Queue/Circular Queue | 98 ---- Circular_Queue/CircularQueue.py | 62 --- Circular_Queue/Circular_Queue.c | 63 --- Circular_Queue/Circular_Queue_Output.txt | 60 --- Contributors.md | 40 -- Counter/array_counter.js | 18 - Counting_Sort_C/countingSort.c | 64 --- DFS_FILE.pdf | Bin 549694 -> 0 bytes Dequeue/deque.cpp | 191 -------- Doble_Link_List/Doble_Link_List.c | 176 ------- Doble_Link_List/Doble_Link_List_Output.txt | 89 ---- FizzBuzz_Javascript/fizzbuzz.js | 13 - FizzBuzz_Javascript/readme.MD | 3 - FizzBuzz_Python/fizzbuzz.python | 9 - FizzBuzz_Python/readme.MD | 3 - FizzBuzz_Swift/FizzBuzz.swift | 19 - FizzBuzz_Swift/readme.MD | 3 - Graph_in_c/BFS.c | 103 ----- HashTable/HashTable.swift | 109 ----- HashTable/MyHashMap.py | 51 -- Infix to expression tree/infix_to_exp.cpp | 149 ------ Infix_To_Postfix/infix2post_2.cpp | 59 --- Infix_To_Postfix/infix2postfix.py | 43 -- Infix_To_Postfix/infix_To_Postfix.c | 86 ---- Infix_To_Postfix/infix_To_Postfix_Output.txt | 18 - Infix_To_Postfix/stack.cpp | 49 -- ...Infix_To_Postfix_To_Evaluation _Output.txt | 38 -- .../Infix_To_Postfix_To_Evaluation.c | 133 ------ Insertion_sort/InsertionSortExample.java | 30 -- Java/Searching/LinearSearch.java | 29 -- Kadanes/Kadane.kt | 18 - Link_List/.DS_Store | Bin 6148 -> 0 bytes Link_List/Link_List_Output.txt | 99 ---- Link_List/LinkedList.java | 197 -------- Link_List/java/LinkedList.java | 81 ---- Link_List/java/Node.java | 21 - Link_List/javascript/linkedlist.js | 113 ----- Link_List/link_list.c | 235 ---------- Link_List/linked-list.py | 41 -- Link_List/swift/.DS_Store | Bin 6148 -> 0 bytes Link_List_Python/Reverse_Linked_list.py | 53 --- Link_List_Python/link_list.py | 70 --- Map/Maps.go | 47 -- Mathematical_Algos/Prime_Number_Test | 50 -- Mathematical_Algos/SieveOfEratosthenes.cpp | 40 -- Mathematical_Algos/modularExponentiation.cpp | 27 -- Matrix/CheckSparse.c | 39 -- Matrix/MatrixTranspose.c | 135 ------ Matrix/Matrix_transpose.c | 135 ------ Matrix/TransposeSparse.c | 69 --- Memoization/memoization.cpp | 27 -- Merkle Tree/App.java | 24 - Merkle Tree/MerkleTree.java | 36 -- Merkle Tree/SHA256Helper.java | 25 - NQueens Backtracking/Nqueen.py | 86 ---- Python/Searching/CocktailSort.py | 24 - Python/Searching/LinearSearch.py | 20 - Queue_By_Stack/Simple_Queue_By_Stack.c | 84 ---- .../Simple_Queue_By_Stack_Output.txt | 30 -- README.md | 52 --- Red_black_tree/red_black.cpp | 360 --------------- Search In Linked List/Search_linked_list.c | 102 ---- Search_Binary/SearchBinary.py | 40 -- Search_Binary/binarySearch.kt | 30 -- Shortest_Path_Algos/floyd-warshall.cpp | 57 --- Shortest_Path_Algos/shortest_path.cpp | 75 --- Shorting/Bubble_Sort.c | 40 -- Shorting/Merge_sort.c | 96 ---- Shorting/insertionSort.java | 36 -- Shorting/quick_sort.py | 23 - Shorting/selection_sort.py | 26 -- Simple_Queue/Simple_Queue.c | 75 --- Simple_Queue/Simple_Queue.js | 29 -- Simple_Queue/Simple_Queue_Output.txt | 82 ---- Simple_Queue/queue.java | 109 ----- Simple_Queue/queue.swift | 271 ----------- Simple_Queue/queue_linkedlist.c | 103 ----- Sorting/Bitonicsort.cpp | 77 --- Sorting/Bubble_Sort.c | 40 -- Sorting/Counting_sort.c | 33 -- Sorting/Cpp/Sorting/Bubble_sort.cpp | 36 -- Sorting/Cpp/Sorting/Bucket_sort.cpp | 79 ---- Sorting/Cpp/Sorting/Counting_sort.cpp | 79 ---- Sorting/Cpp/Sorting/Heap_sort.cpp | 126 ----- Sorting/Cpp/Sorting/Insertion_sort.cpp | 36 -- Sorting/Cpp/Sorting/Merge_sort.cpp | 99 ---- Sorting/Cpp/Sorting/Quick_sort.cpp | 78 ---- Sorting/Cpp/Sorting/Radix_sort.cpp | 95 ---- Sorting/Cpp/Sorting/Randomized_quick_sort.cpp | 100 ---- Sorting/Cpp/Sorting/Shell_sort.cpp | 47 -- Sorting/Cpp/Sorting/timsort.cpp | 112 ----- Sorting/Insertion_Sort.c | 35 -- Sorting/Kotlin/KotlinBubleSort | 20 - Sorting/Merge_sort.c | 96 ---- Sorting/Python/Bubble_Sort.py | 31 -- Sorting/Python/Selection_sort.py | 18 - Sorting/Python/insertion_sort.py | 12 - Sorting/Python/merge_sort.py | 36 -- Sorting/Python/quick_sort.py | 30 -- Sorting/Python/selection_sort.py | 18 - Sorting/Quick_sort.cpp | 51 -- Sorting/Radix/radix.c | 43 -- Sorting/Radix/radix.h | 8 - Sorting/Radix_Sort.cpp | 86 ---- Sorting/Ruby/Length_Sort.rb | 7 - Sorting/Ruby/bubble_sort.rb | 25 - Sorting/Selection_sort.c | 47 -- Sorting/heap-sort.c | 60 --- Sorting/heapsort.py | 41 -- Sorting/merge-sort.c | 80 ---- Sorting/pancakesort.py | 68 --- Sorting/quick_sort.c | 63 --- Sorting/quick_sort.py | 83 ---- Sorting/quicksort.hs.txt | 18 - Sorting/zombiesort.c | 61 --- Stack/.DS_Store | Bin 6148 -> 0 bytes Stack/Stack Output.txt | 53 --- Stack/Stack.kt | 34 -- Stack/Stack_using_arrays.cpp | 78 ---- ...x->postfix and infix->prefix conversion).c | 277 ----------- Stack/stack.c | 71 --- Stack/stack.cpp | 45 -- Stack/stack.java | 52 --- Stack/stack.js | 33 -- Stack/stack.py | 24 - Stack/stack_generic.cpp | 88 ---- Tower_Of_Hanoi/Tower_Of_Hanoi.c | 23 - Tower_Of_Hanoi/Tower_Of_Hanoi_Output.txt | 20 - Tower_Of_Hanoi/Tower_of_Hanoi.js | 19 - Tower_Of_Hanoi/Towers of Hanoi.cpp | 24 - Tower_Of_Hanoi/towerofhanoi.py | 9 - b-tree/b-tree.py | 101 ---- bubble-sort/bubble.c | 58 --- bubble-sort/sample1.txt | 11 - bubble-sort/sample2.txt | 17 - c++/Searching/BinarySearch.cpp | 50 -- c++/Searching/LinearSearch.cpp | 26 -- fenwick-tree/fenwick-tree.java | 46 -- libqueue_in_c/Makefile | 26 -- libqueue_in_c/queue.c | 134 ------ libqueue_in_c/queue.h | 19 - libqueue_in_c/queue_test.c | 59 --- libqueue_in_c/readme | 3 - matrix-multiplication/matrixmult.c | 56 --- matrix-multiplication/sample1.txt | 5 - matrix-multiplication/sample2.txt | 20 - power/power.cpp | 20 - reverse-sentences/input.txt | 2 - reverse-sentences/output.txt | 12 - reverse-sentences/reverse.c | 32 -- reverse-sentences/reverse.py | 3 - searching/Go/BinarySearch.go | 36 -- searching/Sublist Search.cpp | 105 ----- searching/a.out | Bin 15736 -> 0 bytes searching/binary_search.cpp | 46 -- searching/interpolation_search.cpp | 66 --- searching/linear_search.cpp | 37 -- segment_tree/segment_tree.py | 47 -- singly linked in C/Singly_linked.c | 77 --- trie/trie.dart | 123 ----- 235 files changed, 15044 deletions(-) delete mode 100644 .DS_Store delete mode 100644 AVL_Tree/AVL_Tree.c delete mode 100644 AVL_Tree/AVL_Tree.txt delete mode 100644 Algorithms/Dynamic Programming/Travelling_Salesman_Problem.cpp delete mode 100644 Algorithms/Dynamic Programming/chained-matrix-multiplication.c delete mode 100644 Algorithms/Dynamic Programming/coin_change.cpp delete mode 100644 Algorithms/Dynamic Programming/edit_dist.cpp delete mode 100644 Algorithms/Dynamic Programming/eggdrop.cpp delete mode 100644 Algorithms/Dynamic Programming/knapsack-0-1.java delete mode 100644 Algorithms/Dynamic Programming/largest_area.cpp delete mode 100644 Algorithms/Dynamic Programming/lcs.cpp delete mode 100644 Algorithms/Dynamic Programming/lis.cpp delete mode 100644 Algorithms/Dynamic Programming/longest_palindromic_subsequence.cpp delete mode 100644 Algorithms/Dynamic Programming/longest_palindromic_substring.cpp delete mode 100644 Algorithms/Dynamic Programming/longest_path.cpp delete mode 100644 Algorithms/Dynamic Programming/longest_repeating_subsequence.cpp delete mode 100644 Algorithms/Dynamic Programming/longestcommonsubseq.py delete mode 100644 Algorithms/Dynamic Programming/longestconsecutivesubseq.py delete mode 100644 Algorithms/Dynamic Programming/longestincreasingsubseq.py delete mode 100644 Algorithms/Dynamic Programming/maximumsumsubseq.py delete mode 100644 Algorithms/Dynamic Programming/min_coins.cpp delete mode 100644 Algorithms/Dynamic Programming/min_sum.cpp delete mode 100644 Algorithms/Dynamic Programming/minimumCostPath.py delete mode 100644 Algorithms/Dynamic Programming/n lis.cpp delete mode 100644 Algorithms/Dynamic Programming/nthuglyno.py delete mode 100644 Algorithms/Dynamic Programming/partition_2_sets.cpp delete mode 100644 Algorithms/Dynamic Programming/rod_cutting_interviewbit.cpp delete mode 100644 Algorithms/Dynamic Programming/same_sum_subset.cpp delete mode 100644 Algorithms/Graph Algorithms/BFS.cpp delete mode 100644 Algorithms/Graph Algorithms/BFS.dart delete mode 100644 Algorithms/Graph Algorithms/BFS.java delete mode 100644 Algorithms/Graph Algorithms/DFS.dart delete mode 100755 Algorithms/Graph Algorithms/input-graph.txt delete mode 100755 Algorithms/Graph Algorithms/kargers_min_cut.py delete mode 100644 Algorithms/Kadane.java delete mode 100644 Algorithms/README.md delete mode 100644 Algorithms/SieveOfEratosthenes.cpp delete mode 100644 Algorithms/SieveOfEratosthenes.java delete mode 100644 Algorithms/gcd.c delete mode 100644 BT_To_BST/BT_To_BST.c delete mode 100644 BT_To_BST/BT_To_BST_OUTPUT.txt delete mode 100644 Backtracking/NQueen.cpp delete mode 100644 Backtracking/rat_in_a_maze.cpp delete mode 100644 Betting_Game/Betting_Game.c delete mode 100644 Betting_Game/Betting_Game_Output.txt delete mode 100644 Binary Tree in cpp/BinaryTree.cpp delete mode 100644 Binry_Search_Tree/Binary_Search_Tree.c delete mode 100644 Binry_Search_Tree/Binary_Search_Tree.js delete mode 100644 Binry_Search_Tree/Binary_Search_Tree.py delete mode 100644 Binry_Search_Tree/Binary_Search_tree_Output.txt delete mode 100644 Binry_Search_Tree/CheckBST.java delete mode 100644 Binry_Search_Tree/CorrectBST.java delete mode 100644 Binry_Search_Tree/FindAncestor.java delete mode 100644 Binry_Search_Tree/InorderSuccessor.java delete mode 100644 Binry_Search_Tree/LargestBST.java delete mode 100644 Binry_Search_Tree/LevelOrder.java delete mode 100644 Binry_Search_Tree/MorrisTraversal.java delete mode 100644 Binry_Search_Tree/Node.java delete mode 100644 Binry_Search_Tree/PathFromRootToNode.java delete mode 100644 C/Searching/BinarySearch.c delete mode 100644 C/Searching/InterpolationSearch.c delete mode 100644 C/Searching/LinearSearch.c delete mode 100644 C/Searching/TernarySearch.C delete mode 100644 C/Sorting/Count Sort.c delete mode 100644 CONTRIBUTING.md delete mode 100644 Car_Shop/Car_Shop.c delete mode 100644 Car_Shop/Car_Shop_Output.txt delete mode 100644 Circular Doubly Linked List Cpp/Circulardoublylinkedlist.cpp delete mode 100644 CircularQueueJava/CircularQueue.class delete mode 100644 CircularQueueJava/CircularQueue.java delete mode 100644 Circular_Dobely_Link_List/Circular_Dobely_Link_List_Output.txt delete mode 100644 Circular_Dobely_Link_List/Circulr_Dobely_Link_List.c delete mode 100644 Circular_Link_List/Circular_Link_List.c delete mode 100644 Circular_Link_List/Circular_Link_List_Output.txt delete mode 100644 Circular_Link_List/josephus_problem.c delete mode 100644 Circular_Queue/Circular Queue delete mode 100644 Circular_Queue/CircularQueue.py delete mode 100644 Circular_Queue/Circular_Queue.c delete mode 100644 Circular_Queue/Circular_Queue_Output.txt delete mode 100644 Contributors.md delete mode 100644 Counter/array_counter.js delete mode 100644 Counting_Sort_C/countingSort.c delete mode 100644 DFS_FILE.pdf delete mode 100644 Dequeue/deque.cpp delete mode 100644 Doble_Link_List/Doble_Link_List.c delete mode 100644 Doble_Link_List/Doble_Link_List_Output.txt delete mode 100644 FizzBuzz_Javascript/fizzbuzz.js delete mode 100644 FizzBuzz_Javascript/readme.MD delete mode 100644 FizzBuzz_Python/fizzbuzz.python delete mode 100644 FizzBuzz_Python/readme.MD delete mode 100644 FizzBuzz_Swift/FizzBuzz.swift delete mode 100644 FizzBuzz_Swift/readme.MD delete mode 100644 Graph_in_c/BFS.c delete mode 100644 HashTable/HashTable.swift delete mode 100644 HashTable/MyHashMap.py delete mode 100644 Infix to expression tree/infix_to_exp.cpp delete mode 100644 Infix_To_Postfix/infix2post_2.cpp delete mode 100644 Infix_To_Postfix/infix2postfix.py delete mode 100644 Infix_To_Postfix/infix_To_Postfix.c delete mode 100644 Infix_To_Postfix/infix_To_Postfix_Output.txt delete mode 100644 Infix_To_Postfix/stack.cpp delete mode 100644 Infix_to_Postfix_Evaluation/Infix_To_Postfix_To_Evaluation _Output.txt delete mode 100644 Infix_to_Postfix_Evaluation/Infix_To_Postfix_To_Evaluation.c delete mode 100644 Insertion_sort/InsertionSortExample.java delete mode 100644 Java/Searching/LinearSearch.java delete mode 100644 Kadanes/Kadane.kt delete mode 100644 Link_List/.DS_Store delete mode 100644 Link_List/Link_List_Output.txt delete mode 100755 Link_List/LinkedList.java delete mode 100644 Link_List/java/LinkedList.java delete mode 100644 Link_List/java/Node.java delete mode 100644 Link_List/javascript/linkedlist.js delete mode 100644 Link_List/link_list.c delete mode 100644 Link_List/linked-list.py delete mode 100644 Link_List/swift/.DS_Store delete mode 100644 Link_List_Python/Reverse_Linked_list.py delete mode 100644 Link_List_Python/link_list.py delete mode 100644 Map/Maps.go delete mode 100644 Mathematical_Algos/Prime_Number_Test delete mode 100644 Mathematical_Algos/SieveOfEratosthenes.cpp delete mode 100644 Mathematical_Algos/modularExponentiation.cpp delete mode 100644 Matrix/CheckSparse.c delete mode 100644 Matrix/MatrixTranspose.c delete mode 100644 Matrix/Matrix_transpose.c delete mode 100644 Matrix/TransposeSparse.c delete mode 100644 Memoization/memoization.cpp delete mode 100644 Merkle Tree/App.java delete mode 100644 Merkle Tree/MerkleTree.java delete mode 100644 Merkle Tree/SHA256Helper.java delete mode 100644 NQueens Backtracking/Nqueen.py delete mode 100644 Python/Searching/CocktailSort.py delete mode 100644 Python/Searching/LinearSearch.py delete mode 100644 Queue_By_Stack/Simple_Queue_By_Stack.c delete mode 100644 Queue_By_Stack/Simple_Queue_By_Stack_Output.txt delete mode 100644 README.md delete mode 100644 Red_black_tree/red_black.cpp delete mode 100644 Search In Linked List/Search_linked_list.c delete mode 100644 Search_Binary/SearchBinary.py delete mode 100644 Search_Binary/binarySearch.kt delete mode 100644 Shortest_Path_Algos/floyd-warshall.cpp delete mode 100644 Shortest_Path_Algos/shortest_path.cpp delete mode 100644 Shorting/Bubble_Sort.c delete mode 100644 Shorting/Merge_sort.c delete mode 100644 Shorting/insertionSort.java delete mode 100644 Shorting/quick_sort.py delete mode 100644 Shorting/selection_sort.py delete mode 100644 Simple_Queue/Simple_Queue.c delete mode 100644 Simple_Queue/Simple_Queue.js delete mode 100644 Simple_Queue/Simple_Queue_Output.txt delete mode 100644 Simple_Queue/queue.java delete mode 100644 Simple_Queue/queue.swift delete mode 100644 Simple_Queue/queue_linkedlist.c delete mode 100644 Sorting/Bitonicsort.cpp delete mode 100644 Sorting/Bubble_Sort.c delete mode 100644 Sorting/Counting_sort.c delete mode 100644 Sorting/Cpp/Sorting/Bubble_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Bucket_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Counting_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Heap_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Insertion_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Merge_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Quick_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Radix_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Randomized_quick_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/Shell_sort.cpp delete mode 100644 Sorting/Cpp/Sorting/timsort.cpp delete mode 100644 Sorting/Insertion_Sort.c delete mode 100644 Sorting/Kotlin/KotlinBubleSort delete mode 100644 Sorting/Merge_sort.c delete mode 100644 Sorting/Python/Bubble_Sort.py delete mode 100644 Sorting/Python/Selection_sort.py delete mode 100644 Sorting/Python/insertion_sort.py delete mode 100644 Sorting/Python/merge_sort.py delete mode 100644 Sorting/Python/quick_sort.py delete mode 100644 Sorting/Python/selection_sort.py delete mode 100644 Sorting/Quick_sort.cpp delete mode 100644 Sorting/Radix/radix.c delete mode 100644 Sorting/Radix/radix.h delete mode 100644 Sorting/Radix_Sort.cpp delete mode 100644 Sorting/Ruby/Length_Sort.rb delete mode 100644 Sorting/Ruby/bubble_sort.rb delete mode 100644 Sorting/Selection_sort.c delete mode 100644 Sorting/heap-sort.c delete mode 100644 Sorting/heapsort.py delete mode 100644 Sorting/merge-sort.c delete mode 100644 Sorting/pancakesort.py delete mode 100644 Sorting/quick_sort.c delete mode 100644 Sorting/quick_sort.py delete mode 100644 Sorting/quicksort.hs.txt delete mode 100644 Sorting/zombiesort.c delete mode 100644 Stack/.DS_Store delete mode 100644 Stack/Stack Output.txt delete mode 100644 Stack/Stack.kt delete mode 100644 Stack/Stack_using_arrays.cpp delete mode 100644 Stack/stack application(infix->postfix and infix->prefix conversion).c delete mode 100644 Stack/stack.c delete mode 100644 Stack/stack.cpp delete mode 100644 Stack/stack.java delete mode 100644 Stack/stack.js delete mode 100644 Stack/stack.py delete mode 100644 Stack/stack_generic.cpp delete mode 100644 Tower_Of_Hanoi/Tower_Of_Hanoi.c delete mode 100644 Tower_Of_Hanoi/Tower_Of_Hanoi_Output.txt delete mode 100644 Tower_Of_Hanoi/Tower_of_Hanoi.js delete mode 100644 Tower_Of_Hanoi/Towers of Hanoi.cpp delete mode 100644 Tower_Of_Hanoi/towerofhanoi.py delete mode 100644 b-tree/b-tree.py delete mode 100644 bubble-sort/bubble.c delete mode 100644 bubble-sort/sample1.txt delete mode 100644 bubble-sort/sample2.txt delete mode 100644 c++/Searching/BinarySearch.cpp delete mode 100644 c++/Searching/LinearSearch.cpp delete mode 100644 fenwick-tree/fenwick-tree.java delete mode 100644 libqueue_in_c/Makefile delete mode 100644 libqueue_in_c/queue.c delete mode 100644 libqueue_in_c/queue.h delete mode 100644 libqueue_in_c/queue_test.c delete mode 100644 libqueue_in_c/readme delete mode 100644 matrix-multiplication/matrixmult.c delete mode 100644 matrix-multiplication/sample1.txt delete mode 100644 matrix-multiplication/sample2.txt delete mode 100644 power/power.cpp delete mode 100644 reverse-sentences/input.txt delete mode 100644 reverse-sentences/output.txt delete mode 100644 reverse-sentences/reverse.c delete mode 100644 reverse-sentences/reverse.py delete mode 100644 searching/Go/BinarySearch.go delete mode 100644 searching/Sublist Search.cpp delete mode 100755 searching/a.out delete mode 100644 searching/binary_search.cpp delete mode 100644 searching/interpolation_search.cpp delete mode 100644 searching/linear_search.cpp delete mode 100644 segment_tree/segment_tree.py delete mode 100644 singly linked in C/Singly_linked.c delete mode 100644 trie/trie.dart diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 568ce6ed902de29198ccfd19868b17de362f518a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHMQEwYX5S~j?a!%634WNQ}xfi591msXeDj_7-Nhp>IE!Y$!K&~BMlT)2L%Ra|( zLy%wi55Pa*pTIBRFYwL}fNy3u*6#XTq&}bu?Mb(@cb;!%_S@OH?1qSf+Nirr6cJH~ zn`Lm@;$!Uhic` zonF?#@4Tcw#C_{;xzOVSfxGmG?o*4JK*bb0`oB8*8&sn<9nn*q4-9lKp_GnoTyV1h z7Xy>yWC7ancMs@O*I)3XgS!ELj2O@amoOPu+S9k3~dcIns%(h z$xj9+>(rqU?he?D=^dPbFr&GHVrEQKNc$2SM|lE7-_{pKO#L^ZpU7B7@WZ2O(E)HB z`0UAO@5{)a;yw3q&2;=kEowoDtF1vWkh8!_MZh?ut^Gd6mcv%MVRxVs*IJl^tHjy zCe79;c&+JLnZqk8wLM~H&BB(jS`Wd`0pjI#Ft<`Ut1QF~iRldS4UmbdLdJUKrSKS& z%Q7;^vT)t07~awb{Gl6buO1{8dGICqwQGq@>0bjHKJ{wDt3>GzUhUa9;M zEG@5Gdu25Y*TS{yYu`0avT-AC=c8e*J@|&79=7w7j_x&PzUA|+EZN$eEX#L{WVr_Ih0Dg$+>~-WMlAf{et>e^ zlJcJNg15ae9~O2tX};qb@CA2 diff --git a/AVL_Tree/AVL_Tree.c b/AVL_Tree/AVL_Tree.c deleted file mode 100644 index 0878e0a2..00000000 --- a/AVL_Tree/AVL_Tree.c +++ /dev/null @@ -1,301 +0,0 @@ -#include -#include - -struct AVLnode{ - int Data; - int Hight; - struct AVLnode* LeftNode; - struct AVLnode* RightNode; -}; -int GetHight(struct AVLnode* Node){ - if(Node == NULL) return -1; - if(Node->LeftNode == NULL && Node->RightNode == NULL) return 0; - int Hight,LeftChild_Hight,RightChild_Hight; - LeftChild_Hight = GetHight(Node->LeftNode); - RightChild_Hight = GetHight(Node->RightNode); - if(LeftChild_Hight > RightChild_Hight) - return LeftChild_Hight+1; - else - return RightChild_Hight+1; -} -int GetBalance(struct AVLnode * Node){ - if(Node == NULL) return 0; - return GetHight(Node->LeftNode)-GetHight(Node->RightNode); -} - - -struct AVLnode *SingleRightRotation(struct AVLnode *Parent){ - struct AVLnode* LeftChild; - LeftChild = Parent->LeftNode; - Parent->LeftNode = LeftChild->RightNode; - LeftChild->RightNode = Parent; - Parent->Hight =GetHight(Parent); - LeftChild->Hight = GetHight(LeftChild); - return LeftChild; -} -struct AVLnode *SingleLeftRotation(struct AVLnode *Parent){ - struct AVLnode* RightChild; - RightChild = Parent->RightNode; - Parent->RightNode = RightChild->LeftNode; - RightChild->LeftNode = Parent; - Parent->Hight =GetHight(Parent); - RightChild->Hight = GetHight(RightChild); - return RightChild; -} -struct AVLnode *DobleLeftRightRotation(struct AVLnode *Parent){ -struct AVLnode *LeftChild;; - LeftChild = Parent->LeftNode; - Parent->LeftNode = SingleLeftRotation(Parent->LeftNode); - Parent = SingleRightRotation(Parent); - return Parent; -} -struct AVLnode *DobleRightLeftRotation(struct AVLnode *Parent){ - Parent->RightNode = SingleRightRotation(Parent->RightNode); - Parent = SingleLeftRotation(Parent); - return Parent; -} - -struct AVLnode* InsertNode(struct AVLnode* Root,int val){ - if(Root == NULL){ - struct AVLnode *NewNode; - NewNode = (struct AVLnode*)malloc(sizeof(struct AVLnode)); - if(NewNode == NULL){ - printf(" Sorry! malloc is fail\n"); - return Root; - } - NewNode->Data = val; - NewNode->Hight = 0; - NewNode->LeftNode = NULL; - NewNode->RightNode = NULL; - return NewNode; - } - if(val < Root->Data){ - Root->LeftNode = InsertNode(Root->LeftNode,val); - if(GetBalance(Root) == 2){ - // heavy Left Sub-tree - if(val < (Root->LeftNode)->Data){ - // left-left case - Root = SingleRightRotation(Root); - }else{ - // left-Right case - Root = DobleLeftRightRotation(Root); - } - } - }else{ - Root->RightNode = InsertNode(Root->RightNode,val); - if(GetBalance(Root) == -2){ - // right-sub tree heavy - if(val > (Root->RightNode)->Data){ - // right - right case - Root= SingleLeftRotation(Root); - }else{ - // right - left case - Root = DobleRightLeftRotation(Root); - } - } - } - - Root->Hight = GetHight(Root); - return Root; -} - -struct AVLnode* DeleteNode(struct AVLnode* Root,int val){ - struct AVLnode *temp; - int Balance; - if(Root == NULL) return Root; - else if(val < Root->Data) - Root->LeftNode = DeleteNode(Root->LeftNode,val); - else if(val > Root->Data) - Root->RightNode = DeleteNode(Root->RightNode,val); - else{ - // Root->Data == val - if(Root->LeftNode == NULL && Root->RightNode == NULL){ - // Node with 0 childe - free(Root); - return NULL; - }else if(Root->LeftNode == NULL){ - // Node with only Right child - temp = Root->RightNode; - free(Root); - return temp; - }else if(Root->RightNode == NULL ){ - // Node with only Left Child - temp = Root->LeftNode; - free(Root); - return temp; - }else{ - // Node with 2 child - temp = Root->RightNode; - while(temp->LeftNode != NULL){ - temp = temp->LeftNode; - } - printf("%d\n",temp->Data); - Root->Data = temp->Data; - Root->RightNode = DeleteNode(Root->RightNode,temp->Data); - } - if(GetBalance(Root)== 2){ - if(GetBalance(Root->LeftNode)>0){ - //left-left case - return SingleRightRotation(Root); - }else{ - // left-right case - return DobleLeftRightRotation(Root); - } - if(GetBalance(Root)== -2){ - if(GetBalance(Root->RightNode)<0){ - // Right-right case - return SingleRightRotation(Root); - }else{ - //Right-left case - return DobleLeftRightRotation(Root); - } - } - } - } - return Root; -} -void INORDER_Traversal(struct AVLnode *Root){ - if(Root == NULL) - return; - INORDER_Traversal(Root->LeftNode); - printf("%d ",Root->Data); - INORDER_Traversal(Root->RightNode); -} -void PREORDER_Traversal(struct AVLnode *Root){ - if(Root == NULL) - return; - printf("%d ",Root->Data); - PREORDER_Traversal(Root->LeftNode); - PREORDER_Traversal(Root->RightNode); -} - - void POSTORDER_Traversal(struct AVLnode *Root){ - if(Root == NULL) - return; - POSTORDER_Traversal(Root->LeftNode); - POSTORDER_Traversal(Root->RightNode); - printf("%d ",Root->Data); -} -int front=-1,rear=-1; -#define MaxSize 100 -struct AVLnode* Q[MaxSize]; - -void InQueue(struct AVLnode* Data){ - if(rear == MaxSize){ - printf("Sorry Queue is Full\n"); - }else{ - if(front == -1 ) front++; - Q[++rear] = Data; - } -} - -struct AVLnode* Dequeue(){ - //if(front == -1) return - if(front == rear){ - struct AVLnode* r = Q[front]; - front = -1; - rear = -1; - return r; - }else{ - return Q[front++]; - } -} - -void LEVELORDER_Traversal(struct AVLnode *Root){ - InQueue(Root); - struct AVLnode *Temp; - while (front != -1) { - Temp = Dequeue(); - if( Temp != NULL ){ - InQueue(Temp->LeftNode); - InQueue(Temp->RightNode); - printf("%d ",Temp->Data); - } - } - printf("\n"); - } - int Search(struct AVLnode* Root,int Data){ - if(Root == NULL) return 0; - if(Root->Data == Data) return 1; - else if(Root->Data < Data) return Search(Root->RightNode,Data); - else return Search(Root->LeftNode,Data); - - /* while(Data != Root->Data && Root != NULL){ - - if(Data > Root->Data) - Root = Root->RightNode; - else - Root = Root->LeftNode; - } - if(Root == NULL){ - printf("Node Not Avalable.....\n"); - return 0; - }else{ - return 1; - }*/ - - } - - -int main(){ - int c,n,i; - struct AVLnode *Root= NULL; - printf("1) InsertNode\n2) Hight of Tree\n3) Search Data\n4) INORDER_Traversal\n5) PREORDER_Traversal\n6) POSTORDER_Traversal\n7) LEVELORDER_Traversal\n8) DeleteNode\n9) Exit\n\n"); - while(c != 9) { - printf("Enter Your choice :"); - scanf("%d",&c); - switch (c) { - case 1: - printf("Enter Data :"); - scanf("%d",&n); - Root = InsertNode(Root,n); - break; - case 2: - i = GetHight(Root); - printf("Hight Of tree is %d\n",i); - break; - case 3: - printf("Find Data in Tree :"); - scanf("%d",&n); - i= Search(Root,n); - if(i == 1){ - printf("Data found\n"); - }else{ - printf("Data Not found\n"); - } - break; - case 4: - printf("INORDER_Traversal of Tree is...."); - INORDER_Traversal(Root); - printf("\n"); - break; - case 5: - printf("PREORDER_Traversal of Tree is...."); - PREORDER_Traversal(Root); - printf("\n"); - break; - case 6: - printf("POSTORDER_Traversal of Tree is...."); - POSTORDER_Traversal(Root); - printf("\n"); - break; - case 7: - printf("LEVELORDER_Traversal of Tree is...."); - LEVELORDER_Traversal(Root); - break; - case 8: - printf("which Node you want to delete :"); - scanf("%d",&n); - DeleteNode(Root,n); - break; - case 9: - exit(0); - break; - default: - printf("Enter valid choice between 1-10\n"); - break; - } - - } - return 0; -} diff --git a/AVL_Tree/AVL_Tree.txt b/AVL_Tree/AVL_Tree.txt deleted file mode 100644 index a2927666..00000000 --- a/AVL_Tree/AVL_Tree.txt +++ /dev/null @@ -1,69 +0,0 @@ -1) InsertNode -2) Hight of Tree -3) Search Data -4) INORDER_Traversal -5) PREORDER_Traversal -6) POSTORDER_Traversal -7) LEVELORDER_Traversal -8) DeleteNode -9) Exit - -Enter Your choice :1 -Enter Data :50 -Enter Your choice :1 -Enter Data :60 -Enter Your choice :1 -Enter Data :40 -Enter Your choice :1 -Enter Data :70 -Enter Your choice :1 -Enter Data :80 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....50 40 70 60 80 -Enter Your choice :1 -Enter Data :90 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 40 60 90 -Enter Your choice :1 -Enter Data :65 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 40 60 90 65 -Enter Your choice :1 -Enter Data :64 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 40 64 90 60 65 -Enter Your choice :4 -INORDER_Traversal of Tree is....40 50 60 64 65 70 80 90 -Enter Your choice :5 -PREORDER_Traversal of Tree is....70 50 40 64 60 65 80 90 -Enter Your choice :6 -POSTORDER_Traversal of Tree is....40 60 65 64 50 90 80 70 -Enter Your choice :2 -Hight Of tree is 3 -Enter Your choice :8 -which Node you want to delete :40 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 64 90 60 65 -Enter Your choice :8 -which Node you want to delete :90 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 64 60 65 -Enter Your choice :4 -INORDER_Traversal of Tree is....50 60 64 65 70 80 -Enter Your choice :5 -PREORDER_Traversal of Tree is....70 50 64 60 65 80 -Enter Your choice :6 -POSTORDER_Traversal of Tree is....60 65 64 50 80 70 -Enter Your choice :8 -which Node you want to delete :60 -Enter Your choice :4 -INORDER_Traversal of Tree is....50 64 65 70 80 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 80 64 65 -Enter Your choice :8 -which Node you want to delete :80 -Enter Your choice :7 -LEVELORDER_Traversal of Tree is....70 50 64 65 -Enter Your choice :9 - -Press any key to continue . . . diff --git a/Algorithms/Dynamic Programming/Travelling_Salesman_Problem.cpp b/Algorithms/Dynamic Programming/Travelling_Salesman_Problem.cpp deleted file mode 100644 index 6d341942..00000000 --- a/Algorithms/Dynamic Programming/Travelling_Salesman_Problem.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include -using namespace std; - -int costMatrix[5][5]; -int vistedCities[5]; -int numCity = 5; -int cost = 0; - -int tsp(int); -void minCost(int); - -//Main functions -int main() -{ - - int i; - int j; - cout << "\n\nEnter distance between cities into matrix...\n"; - for (i = 0; i < numCity; i++) - { - cout << "\nEnter " << numCity << " elements in Row[" << i + 1 << "]\n"; - for (j = 0; j < numCity; j++) - cin >> costMatrix[i][j]; - } - cout << "\nDistances entered into cost matrix:\n"; - for (i = 0; i < numCity; i++) - { - cout << endl; - for (j = 0; j < numCity; j++) - { - cout << costMatrix[i][j] << " "; - } - } - - //Display results - cout << "\n\n Optimum Path: \t "; - minCost(0); - cout << "\n Minimum Cost: \t"; - cout << cost; - return 0; -} - -//Function to determine minimum cost -void minCost(int city) -{ - int nearestCity; - vistedCities[city] = 1; - - cout << city + 1; - nearestCity = tsp(city); - - if (nearestCity == 999) - { - nearestCity = 0; - cout << nearestCity + 1; - cost = cost + costMatrix[city][nearestCity]; - return; - } - minCost(nearestCity); -} - -int tsp(int city1) -{ - int counter; - int nearestCity = 999; - int mini = 999; - int temp; - - for (counter = 0; counter < numCity; counter++) - { - if ((costMatrix[city1][counter] != 0) && (vistedCities[counter] == 0)) - { - if (costMatrix[city1][counter] < mini) - { - mini = costMatrix[counter][0] + costMatrix[city1][counter]; - } - temp = costMatrix[city1][counter]; - nearestCity = counter; - } - } - if (mini != 999) - cost = cost + temp; - - return nearestCity; -} diff --git a/Algorithms/Dynamic Programming/chained-matrix-multiplication.c b/Algorithms/Dynamic Programming/chained-matrix-multiplication.c deleted file mode 100644 index c775d947..00000000 --- a/Algorithms/Dynamic Programming/chained-matrix-multiplication.c +++ /dev/null @@ -1,67 +0,0 @@ -#include - -int infinity=32500; - -struct x{ - int used,weight; -}; - -int main() -{ - int graph[9][9]={ - { 0, 4, 0, 0, 0, 0, 0, 8, 0 }, - { 4, 0, 8, 0, 0, 0, 0, 11, 0 }, - { 0, 8, 0, 7, 0, 4, 0, 0, 2 }, - { 0, 0, 7, 0, 9, 14, 0, 0, 0 }, - { 0, 0, 0, 9, 0, 10, 0, 0, 0 }, - { 0, 0, 4, 14, 10, 0, 2, 0, 0 }, - { 0, 0, 0, 0, 0, 2, 0, 1, 6 }, - { 8, 11, 0, 0, 0, 0, 1, 0, 7 }, - { 0, 0, 2, 0, 0, 0, 6, 7, 0 } - }; - - struct x arr[9];//this array traces value is filled or not - int w[9];//Stores the temporary weight - - //lets start from index 0 as default - w[0]=0; - arr[0].weight=0; - // arr[0].used=1; - for(int i=1;i<9;i++){ - w[i]=infinity; - arr[i].weight=infinity; - arr[i].used=0; - } - int count=0; - while(count<9){ - int temp=infinity,//temporary min weight - ti=-1;//temporary min index - - //find the minimum unused index - for(int i=0;i<9;i++){ - if(w[i]replacer+arr[ti].weight) && arr[i].used!=1) - w[i]=replacer+arr[ti].weight; - } - count++; - } - for(int i=0;i<9;i++) - printf("%d\t",arr[i].weight); - return 0; -} diff --git a/Algorithms/Dynamic Programming/coin_change.cpp b/Algorithms/Dynamic Programming/coin_change.cpp deleted file mode 100644 index d1c3b5db..00000000 --- a/Algorithms/Dynamic Programming/coin_change.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -using namespace std; - -int dp[10000][10000]; - -int countMemo(int a[],int n,int val) -{ - if(val==0) - return 1; - if(val<0) - return 0; - if(n<=0 && val>=1) - return 0; - if(dp[n][val]==-1) - dp[n][val]=countMemo(a,n-1,val)+countMemo(a,n,val-a[n-1]); - return dp[n][val]; -} - -int countTabulation(int a[],int n,int val) -{ - int table[val+1][n]; - int i,j; - for(i=0;i=0?table[i-a[j]][j]:0; - int y=j>=1?table[i][j-1]:0; - table[i][j]=x+y; - } - } - return table[val][n-1]; -} - -int main() -{ - int t; cin>>t; - while(t--) - { - int n,i; cin>>n; - int arr[n]; - for(i=0;i>arr[i]; - int val; cin>>val; - memset(dp,-1,sizeof(dp)); - cout< -using namespace std; - -void editDist(string s1,string s2) -{ - // for printing the minimum number of operations required - int n=s1.length(),m=s2.length(); - int dp[n+1][m+1]; - int i,j; - for(i=0;i<=n;i++) - { - for(j=0;j<=m;j++) - { - if(i==0) - dp[i][j]=j; - else if(j==0) - dp[i][j]=i; - else - { - if(s1[i-1]==s2[j-1]) - dp[i][j]=dp[i-1][j-1]; - else - dp[i][j]=1+min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1]); - } - } - } - cout<>s1>>s2; - editDist(s1,s2); - return 0; -} \ No newline at end of file diff --git a/Algorithms/Dynamic Programming/eggdrop.cpp b/Algorithms/Dynamic Programming/eggdrop.cpp deleted file mode 100644 index b119ca2b..00000000 --- a/Algorithms/Dynamic Programming/eggdrop.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include -using namespace std; - -int minAttempts(int n,int k) -{ - int dp[n+1][k+1]; - int i,j,p; - for(i=1;i<=n;i++) - { - dp[i][1]=1; - dp[i][0]=0; - } - for(i=1;i<=k;i++) - dp[1][i]=i; - - for(i=2;i<=n;i++) - { - for(j=2;j<=k;j++) - { - dp[i][j]=INT_MAX; - for(p=1;p<=j;p++) - { - int res=1+max(dp[i-1][p-1],dp[i][j-p]); - dp[i][j]=min(dp[i][j],res); - } - } - } - return dp[n][k]; -} - -int main() -{ - int t; cin>>t; - while(t--) - { - int n,k; cin>>n>>k; - cout<b) - return a; - return b; - } - - public static void main(String args[]) { - int values[]=new int[] {10,15,40}; - int weights[]=new int[] {1,2,3}; - int total=6; - int arr[][]=new int[weights.length+1][total+1]; - for(int i=0;i=0) { - //max value from - //1.same Column above value - //2.i-1 th value + arr[i-1][j-weights[i-1]] - arr[i][j]=getMax(arr[i-1][j],values[i-1]+arr[i-1][j-weights[i-1]]); - } - else { - arr[i][j]=arr[i-1][j]; - } - System.out.print(arr[i][j] + " "); - }System.out.println(""); - } - System.out.println(arr[weights.length][total]); - } - -} - - -//Output: -/*0 0 0 0 0 0 0 -0 10 10 10 10 10 10 -0 10 15 25 25 25 25 -0 10 15 40 50 55 65 -65*/ diff --git a/Algorithms/Dynamic Programming/largest_area.cpp b/Algorithms/Dynamic Programming/largest_area.cpp deleted file mode 100644 index 9a45c46b..00000000 --- a/Algorithms/Dynamic Programming/largest_area.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -using namespace std; - -int matrix[100][100]; - -int largest_square_of_1(int n,int m) -{ - int dp[n][m],i,j,ma=0; - for(i=0;i0) - matrix[i][j]=1+matrix[i-1][j]; - } - } - for(i=0;i()); - int ma=0; - for(i=0;i>n>>m; - int i,j; - for(i=0;i>matrix[i][j]; - } - } - cout< -using namespace std; - -void lengthOfLCS(string s1,string s2) -{ - - // for calculating the length of lcs - int n=s1.length(),m=s2.length(); - int dp[n+1][m+1]; - memset(dp,0,sizeof(dp)); - int i,j; - for(i=1;i<=n;i++) - { - for(j=1;j<=m;j++) - { - if(s1[i-1]==s2[j-1]) - dp[i][j]=1+dp[i-1][j-1]; - else - dp[i][j]=max(dp[i-1][j],dp[i][j-1]); - } - } - cout<>s1>>s2; - lengthOfLCS(s1,s2); -} \ No newline at end of file diff --git a/Algorithms/Dynamic Programming/lis.cpp b/Algorithms/Dynamic Programming/lis.cpp deleted file mode 100644 index b8c4501a..00000000 --- a/Algorithms/Dynamic Programming/lis.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include -using namespace std; - -int lis_N2(int a[],int n) -{ - if(n==0) - return 0; - int lis[n]; - lis[0]=1; - int ma=1; - for(int i=1;i1) - { - int m=l+(r-l)/2; - if(tail[m]>=key) - r=m; - else - l=m; - } - return r; -} - -int lis_NlogN(int a[],int n) -{ - if(n==0) - return 0; - int tail[n]={0}; - tail[0]=a[0]; int length=1; - for(int i=1;itail[length-1]) - tail[length++]=a[i]; - else - tail[ceilIndex(tail,-1,length-1,a[i])]=a[i]; - } - return length; -} - -int main() -{ - int n; cin>>n; - int a[n],i; - for (int i = 0; i < n; ++i) - { - cin>>a[i]; - } - cout< -using namespace std; - -void longestPalindromicSubsequence(string s) -{ - int n=s.length(); - int dp[n][n]; - int i,j; - int ma=0,index=0; - for(i=0;i>s; - longestPalindromicSubsequence(s); -} \ No newline at end of file diff --git a/Algorithms/Dynamic Programming/longest_palindromic_substring.cpp b/Algorithms/Dynamic Programming/longest_palindromic_substring.cpp deleted file mode 100644 index 70791bce..00000000 --- a/Algorithms/Dynamic Programming/longest_palindromic_substring.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include -using namespace std; - -void longestPalindromicSubstring1(string s) // time complexity:O(N^2) space complexity:O(N^2) -{ - int n=s.length(); - int dp[n][n]; - int i,j; - int ma=0,index=0; - for(i=0;i=0 && highmaxLength) - { - start=low; - maxLength=high-low+1; - } - ++high; - --low; - } - - // all odd length palindromes - low=i-1; - high=i+1; - while(low>=0 && highmaxLength) - { - start=low; - maxLength=high-low+1; - } - ++high; - --low; - } - } - cout<>s; - longestPalindromicSubstring1(s); - cout< -using namespace std; - -int maxFromCell(int i,int j,int *matrix,int *dp,int n) -{ - if(i<0 || i>=n || j<0 || j>=n) - return 0; - if(*(dp+i*n+j)!=-1) - return *(dp+i*n+j); - if (j0 && (*(matrix+i*n+j) +1 == *(matrix+i*n+j-1))) - return *(dp+i*n+j) = 1 + maxFromCell(i,j-1,matrix,dp,n); - - if (i>0 && (*(matrix+i*n+j) +1 == *(matrix+(i-1)*n+j))) - return *(dp+i*n+j) = 1 + maxFromCell(i-1,j,matrix,dp,n); - - if (i>n; - int matrix[n][n],i,j; - for(i=0;i>matrix[i][j]; - } - int dp[n][n]; - memset(dp,-1,sizeof(dp)); - int res=1; - for(i=0;i -using namespace std; - -int solve(string str,int n) -{ - int dp[n+1][n+1]; - memset(dp,0,sizeof(dp)); - int i,j; - for(i=1;i<=n;i++) - { - for(j=1;j<=n;j++) - { - if(str[i-1]==str[j-1] && i!=j) - dp[i][j]=1+dp[i-1][j-1]; - else - dp[i][j]=max(dp[i][j-1],dp[i-1][j]); - } - } - return dp[n][n]; -} - -int main() -{ - int t; cin>>t; - while(t--) - { - int n; cin>>n; - string str; cin>>str; - cout<l[j] and (LIS[i]l[j] and (LIS[i] -using namespace std; - -int minCoinsDP(int a[],int n,int val) -{ - int table[val+1]; - - table[0]=0; // if value is zero then zero coins required - - for (int i = 1; i <=val; ++i) - { - table[i]=INT_MAX; - for (int j = 0; j < n; ++j) - { - if(i>=a[j]) - { - int subres=table[i-a[j]]; - if (subres!=INT_MAX && subres+1 q; - q.push(val); - int v[n+1]={0}; - int d=0; - while(q.size()) - { - int s=q.size(); - while(s--) - { - int p=q.front(); - if(p==0) - return d; - q.pop(); - if(v[p] || p<0) - continue; - v[p]=1; - for (int i = 0; i < n; i++) - q.push(p - a[i]); - - } - d++; - } - return -1; -} - -int main(int argc, char const *argv[]) -{ - int n; cin>>n; - int a[n],i,val; - for(i=0;i>a[i]; - cin>>val; - - cout< -using namespace std; - -int dp[101][101][2]; - -int sol(int i,int j,int f,int a[]) -{ - if(i==j) - return dp[i][j][f%2]=0; - if(f%2==0) - { - if(dp[i+1][j][1]==-1) - dp[i+1][j][1]=sol(i+1,j,f+1,a); - if(dp[i][j-1][1]==-1) - dp[i][j-1][1]=sol(i,j-1,f+1,a); - return dp[i][j][0]=max(a[i]+dp[i+1][j][1],a[j]+dp[i][j-1][1]); - } - else - { - if(a[i]>a[j]) - { - if(dp[i+1][j][0]==-1) - dp[i+1][j][0]=sol(i+1,j,f+1,a); - return dp[i][j][1]=dp[i+1][j][0]; - } - else - { - if(dp[i][j-1][0]==-1) - dp[i][j-1][0]=sol(i,j-1,f+1,a); - return dp[i][j][1]=dp[i][j-1][0]; - } - } -} - -int main() -{ - int t,i; cin>>t; - while(t--) - { - int n; cin>>n; - int a[n]; - for(i=0;i>a[i]; - } - memset(dp,-1,sizeof(dp)); - cout<0: - lower_bound = j-1 - upper_bound = j+1 - - min_cost = min(arr2[i][lower_bound:upper_bound+1]) - for k in range(lower_bound, upper_bound+1): - if arr2[i][k] == min_cost: - min_index[i] = k - - -path = [] -for i in range(0, rows): - path.append((i+1, min_index[i]+1)) -print("Minimum cost path is: ") -print(path) \ No newline at end of file diff --git a/Algorithms/Dynamic Programming/n lis.cpp b/Algorithms/Dynamic Programming/n lis.cpp deleted file mode 100644 index 809ed760..00000000 --- a/Algorithms/Dynamic Programming/n lis.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - -The problem is variation of Longest Increasing Subsequence. -The numbers which are already a part of LIS need not to be changed. -So minimum elements to change is difference of size of array and number of elements in LIS. -Note that we also need to make sure that the numbers are integers. -So while making LIS, we do not consider those elements as part of LIS that cannot form strictly -increasing by inserting elements in middle. - -Example { 1, 2, 5, 3, 4 }, we consider length of LIS as three {1, 2, 5}, not as {1, 2, 3, 4} -because we cannot make a strictly increasing array of integers with this LIS. - -*/ -#include -using namespace std; - -int maxi(int a[],int n) -{ - int g=a[0],i; - for(i=1;ig) - g=a[i]; - } - return g; -} - -int main() -{ - int t; - cin>>t; - while(t--) - { - int n,i,j; - cin>>n; - int a[n]; - for(i=0;i>a[i]; - - int ans[n]; - ans[0]=1; - for(i=1;ia[j] && ans[i] -using namespace std; - -int partitionRec(int a[],int index,int cSum,int totSum) -{ - if(index==-1) - return abs((2*cSum)-totSum); - - return min(partitionRec(a,index-1,cSum+a[index],totSum),partitionRec(a,index-1,cSum,totSum)); -} - -int partitionTab(int a[],int n,int sum) -{ - int dp[n+1][sum+1]; - int i,j; - for(i=0;i<=n;i++) - dp[i][0]=1; - for(i=1;i<=sum;i++) - dp[0][i]=0; - for(i=1;i<=n;i++) - { - for(j=1;j<=sum;j++) - { - if(a[i-1]<=j) // if the item can be included - dp[i][j]=dp[i-1][j] || dp[i-1][j-a[i-1]]; - - else // if the element cannot be included - dp[i][j]=dp[i-1][j]; - } - } - int diff=INT_MAX; - for(i=sum/2;i>=0;i--) - { - if(dp[n][i]) - { - diff=sum-2*i; - break; - } - } - return diff; -} - -int main() -{ - int n; cin>>n; - int a[n],i,totSum=0; - for(i=0;i>a[i]; - totSum+=a[i]; - } - cout< -using namespace std; - -int dp[100][100]; -int parent[100][100]; -int ans[100]; int k; -int a[100]; - -int rec(int l,int r) -{ - if(l+1>=r) // 0 or 1 element - return 0; - - int &ret=dp[l][r]; - if(ret!=-1) - return ret; - - ret=INT_MAX; - int bestIndex; - for(int i=l+1;i=r) - return; - - ans[k++]=a[parent[l][r]]; - back(l,parent[l][r]); - back(parent[l][r],r); -} - -int main() -{ - int n,i; cin>>n; - int m; cin>>m; - int a[m+2]; - a[0]=0; - a[m+1]=n; - for(i=1;i<=m;i++) - cin>>a[i]; - memset(dp,-1,sizeof(dp)); - memset(parent,-1,sizeof(parent)); - int best=rec(0,n-1); - k=0; - back(0,n-1); - for(i=0;i -using namespace std; - -bool sol(int a[],int n,int sum) -{ - if(sum%2==1) - return false; - sum=sum/2; - bool dp[n+1][sum+1]; - int i,j; - for(i=0;i<=n;i++) - dp[i][0]=true; - for(i=1;i<=sum;i++) - dp[0][i]=false; - for(i=1;i<=n;i++) - { - for(j=1;j<=sum;j++) - { - if(j>t; - while(t--) - { - int n,i; cin>>n; - int a[n]; - int sum=0; - for(i=0;i>a[i]; - sum+=a[i]; - } - if(sol(a,n,sum)) - cout<<"YES\n"; - else - cout<<"NO\n"; - } - return 0; -} \ No newline at end of file diff --git a/Algorithms/Graph Algorithms/BFS.cpp b/Algorithms/Graph Algorithms/BFS.cpp deleted file mode 100644 index d3677a47..00000000 --- a/Algorithms/Graph Algorithms/BFS.cpp +++ /dev/null @@ -1,95 +0,0 @@ - - //Bfs for undirected and unweighted graph - -#include -#include -#include -#include -#include -#define rep(i,a,b) for(int i=a;i> edges; - -void BFS(char root) -{ - cout << "\nBFS : " ; - queue visitRank ; - map visited ; - - char currNode = root ; - visitRank.push(currNode); - visited[currNode]=true; - while(!visitRank.empty()) - { - currNode = visitRank.front(); - for(auto c : edges[currNode]) - if(!visited[c]) - visitRank.push(c),visited[c]=true; - cout << currNode << " "; - visitRank.pop(); - } -} - - -void DFS(char root) -{ - cout << "\nDFS : " ; - stack visitRank; - map visited ; - char currNode = root ; - visitRank.push(currNode); - visited[currNode]=true; - while(!visitRank.empty()) - { - cout << currNode << " "; - currNode = visitRank.top(); - for(auto c : edges[currNode]) - if(!visited[c]) - visitRank.push(c),visited[c]=true,currNode=c; - visitRank.pop(); - } -} - -int main() -{ - int totalNodes,totalEdges ; - - cout << "Enter Total Nodes : " ; - cin >> totalNodes ; - cout << "Enter total number of Edges : "; - cin >> totalEdges ; - - - char u,v ; - - rep(i,0,totalEdges) - { - cin >> u >> v ; - edges[u].pb(v); - edges[v].pb(u); - } - char root ; - cout << "Enter Root : " ; - cin >> root ; - while(edges[root].size()==0) - { - cout << "Not Valid Root Node, " << "Enter Again : " ; - cin >> root ; - } - BFS(root); - DFS(root); -} - -/* -A B -A C -B D -B E -D E -E F -C H -C G -G H -*/ - diff --git a/Algorithms/Graph Algorithms/BFS.dart b/Algorithms/Graph Algorithms/BFS.dart deleted file mode 100644 index ee675dba..00000000 --- a/Algorithms/Graph Algorithms/BFS.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'dart:collection'; - -void main(){ - bfs b=bfs(4); - b.addEdge(0, 1); - b.addEdge(0, 2); - b.addEdge(1, 2); - b.addEdge(2, 0); - b.addEdge(2, 3); - b.addEdge(3, 3); - b.traverse(0); -} - -class bfs{ - List>address; - Set visited= {}; - Queue queue = Queue(); - int vertices; - - bfs(this.vertices){ - address=List>(this.vertices); - for(int index=0;index(); - } - } - - void addEdge(int start, int end){ - address[start].add(end); - } - - void traverse(int start){ - visited.add(start); - queue.add(start); - while(queue.isNotEmpty){ - int visit=queue.removeFirst(); - print(visit); - - for(int index=0;index adj[]; //Adjacency List - - Graph(int v) //Parameterized Constructor - { - num_of_vertices = v; - adj = new LinkedList[v]; - for (int i=0; i queue = new LinkedList(); //a queue for BFS - - visited[s]=true; //Mark current node as visited by setting it to true. - queue.add(s); // enqueue the visited node. - - while (queue.size() != 0) - { - s = queue.poll(); // Dequeue a vertex from queue - System.out.print(s+" "); //print that vertex. - - // If a adjacent vertex has not been visited, then mark it as visited and enqueue it from queue. - Iterator i = adj[s].listIterator(); - while (i.hasNext()) - { - int n = i.next(); - if (!visited[n]) - { - visited[n] = true; - queue.add(n); - } - } - } - } - - public static void main(String args[]) - { - Graph g = new Graph(5); - - g.addEdge(0, 1); - g.addEdge(0, 2); - g.addEdge(1, 2); - g.addEdge(1, 4); - g.addEdge(1, 3); - g.addEdge(2, 4); - g.addEdge(3, 4); - - System.out.println("Breadth First Traversal starting from vertex 0 : "); - - g.BFS(0); - } -} \ No newline at end of file diff --git a/Algorithms/Graph Algorithms/DFS.dart b/Algorithms/Graph Algorithms/DFS.dart deleted file mode 100644 index 4e51ad81..00000000 --- a/Algorithms/Graph Algorithms/DFS.dart +++ /dev/null @@ -1,40 +0,0 @@ -void main(){ - dfs graph=dfs(4); - graph.newEdge(0,1); - graph.newEdge(0,2); - graph.newEdge(1,2); - graph.newEdge(2,0); - graph.newEdge(2,3); - graph.newEdge(3,3); - graph.traverse(0); -} - -class dfs{ - int vertices; - static List> address; - static Set visited={}; - - dfs(this.vertices){ - address = List>(this.vertices); - for(int index=0;index(); - } - - } - - void newEdge(int start,int end){ - address[start].add(end); - } - - void traverse(int vertex){ - print(vertex); - visited.add(vertex); - int length = address[vertex].length; - for(int index=0;indexy.rank: - y.p=x - return y - else: - x.p=y - if x.rank==y.rank: - y.rank+=1 - return x - def findSet(x): - if x!=x.p: - x.p=DisjointSet.findSet(x.p) - return x.p - def sameComponent(x,y): - if DisjointSet.findSet(x)==DisjointSet.findSet(y): - return True - return False - def union(x,y): - DisjointSet.link(DisjointSet.findSet(x),DisjointSet.findSet(y)) - -def parseFile(filename): - with open(filename,'r') as al: - content = al.readlines() - adj_list = [x.strip().split() for x in content] - edges=[]#contains edges - list of tuple - vertices=[]#contains vertices - list of int - for a_list in adj_list: - vertices.append(int(a_list[0])) - for i in range(1,len(a_list)): - edges.append((int(a_list[0]),int(a_list[i]))) - - - #to remove duplicates - vertices=list(set(vertices)) - edges=list(set(edges)) - #to remove (b,a) if (a.b) exists - for edge in range(len(edges)-1,-1,-1): - if (edges[edge][1],edges[edge][0]) in edges: - print("[INFO]:removing ",edges[edge]) - del edges[edge] - #to remove self-loops - elif edges[edge][0]==edges[edge][1]: - print("[INFO]:removing ",edges[edge]) - del edges[edge] - #print(edges) - return vertices,edges -def main(vertices,edges): - min_cut=len(vertices) - for i in range(100): - e=edges[:] - V=vertices[:] - DSForest=dict() - for vertex in V: - DSForest.update({vertex:DisjointSet(vertex)}) - #v- number of vertices - v=len(V) - #continue till number of components becomes 2 - while(v>2): - edge=randint(0,len(e)-1) - print("Edge picked = ",e[edge]) - #join components - if(DisjointSet.findSet(DSForest[e[edge][0]])!=DisjointSet.findSet(DSForest[e[edge][1]])): - DisjointSet.union(DSForest[e[edge][0]],DSForest[e[edge][1]]) - v-=1 - #remove processed edge - print("[INFO]:removing edge",e[edge]) - del e[edge] - #remove edges edges belonging to same components(self-loop) - for edge in range(len(e)-1,-1,-1): - if DisjointSet.sameComponent(DSForest[e[edge][0]],DSForest[e[edge][1]]): - print("[INFO]In same component : removing edge",e[edge]) - del e[edge] - else: - print("[INFO]In different component : ",e[edge]) - for j in DSForest.keys(): - print("vertex= ",j," Parent : ",DSForest[j].p.v," Rank : ",DSForest[j].rank) - print("Remaining Edges : ",e) - print("Number of cuts required : ",len(e)) - #update min-cut - if len(e) -using namespace std; - - -//the function to generate all primes smaller than or equal to a number -void SieveOfEratosthenes(int n) -{ - - bool prime[n+1]; - memset(prime, true, sizeof(prime)); - - for(int p=2; p*p<=n; p++) - { - if(prime[p]==true) - { - for(int i=p*2;i<=n;i+=p) - prime[i]=false; - } - } - for(int p=2;p<=n;p++) - if(prime[p]) - cout< -int GCD(int,int); -void main() -{ - int p,q,result; - printf("Enter two numbers GCD: \n"); - scanf("%d%d",&p,&q); - result=GCD(p,q); - printf("The GCD %d",result); -} -int GCD(int m,int n) -{ - if(n>m) - GCD(n,m); - else if(n==0) - return m; - else - GCD(n,m%n); -} diff --git a/BT_To_BST/BT_To_BST.c b/BT_To_BST/BT_To_BST.c deleted file mode 100644 index 9c7600b8..00000000 --- a/BT_To_BST/BT_To_BST.c +++ /dev/null @@ -1,164 +0,0 @@ -#include -#include -int current = 0; -struct BSTnode{ - int Data; - struct BSTnode* LeftNode; - struct BSTnode* RightNode; -}; - - struct BSTnode* InsertNode(struct BSTnode* Root,int Data){ - struct BSTnode *temp,*NewNode; - NewNode = (struct BSTnode*)malloc(sizeof(struct BSTnode)); - if(NewNode == NULL){ - printf("Sorry Malloc is fail...!!!\n"); - return Root; - } - - NewNode->Data = Data; - NewNode->LeftNode = NULL; - NewNode->RightNode = NULL; - - - temp = Root; - - /*while (temp != NULL ) { - if(temp->Data > Root->Data){ - temp = Root->RightNode; - }else{ - temp = Root->LeftNode; - } - } - temp = NewNode;*/ - - if(Root == NULL){ - Root = NewNode; - return Root; - }else if(Data > Root->Data){ - Root->RightNode = InsertNode(Root->RightNode,Data); - }else{ - Root->LeftNode = InsertNode(Root->LeftNode,Data); - } - return temp; -} -void INORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - INORDER_Traversal(Root->LeftNode); - printf("%d ",Root->Data); - INORDER_Traversal(Root->RightNode); -} - -void PREORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - printf("%d ",Root->Data); - PREORDER_Traversal(Root->LeftNode); - PREORDER_Traversal(Root->RightNode); -} - - void POSTORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - POSTORDER_Traversal(Root->LeftNode); - POSTORDER_Traversal(Root->RightNode); - printf("%d ",Root->Data); -} -int front=-1,rear=-1; -#define MaxSize 100 -struct BSTnode* Q[MaxSize]; - -void InQueue(struct BSTnode* Data){ - if(rear == MaxSize){ - printf("Sorry Queue is Full\n"); - }else{ - if(front == -1 ) front++; - Q[++rear] = Data; - } -} - -struct BSTnode* Dequeue(){ - //if(front == -1) return - if(front == rear){ - struct BSTnode* r = Q[front]; - front = -1; - rear = -1; - return r; - }else{ - return Q[front++]; - } -} - -void LEVELORDER_Traversal(struct BSTnode *Root){ - InQueue(Root); - struct BSTnode *Temp; - while (front != -1) { - Temp = Dequeue(); - if( Temp != NULL ){ - InQueue(Temp->LeftNode); - InQueue(Temp->RightNode); - printf("%d ",Temp->Data); - } - } - printf("\n"); - } -int main(){ - struct BSTnode*Root = NULL; - int n[100]={0},c,h=0; - printf("1) InsertNode In Binary tree in LEVELORDER\n2) Convert Tree in Binary-Search-Tree Display in INORDER_Traversal\n"); - printf("3) Convert Tree in Binary-Search-Tree Display in PREORDER_Traversal\n4) Convert Tree in Binary-Search-Tree Display in POSTORDER_Traversal\n"); - printf("5) Convert Tree in Binary-Search-Tree Display in LEVELORDER_Traversal\n6) Exit\n"); - while(c != 6){ - printf("Enter your choice :"); - scanf("%d",&c); - switch (c) { - case 1: - printf("Enter Node in Binary Value in LEVELORDER: "); - scanf("%d",&n[current++]); - break; - case 2: - h=0; - printf("your Binary-Search-Tree in INORDER_Traversal is..."); - while (n[h] != 0) { - Root= InsertNode(Root,n[h++]); - } - INORDER_Traversal(Root); - Root = NULL; - printf("\n"); - break; - case 3: - h=0; - printf("your Binary-Search-Tree in PREORDER_Traversal is..."); - while (n[h] != 0) { - Root= InsertNode(Root,n[h++]); - } - PREORDER_Traversal(Root); - printf("\n"); - Root = NULL; - break; - case 4: - h=0; - printf("your Binary-Search-Tree in POSTORDER_Traversal is..."); - while (n[h] != 0) { - Root= InsertNode(Root,n[h++]); - } - POSTORDER_Traversal(Root); - Root = NULL; - printf("\n"); - break; - case 5: - h=0; - printf("your Binary-Search-Tree in LEVELORDER_Traversal is..."); - while (n[h] != 0) { - Root= InsertNode(Root,n[h++]); - } - LEVELORDER_Traversal(Root); - Root = NULL; - break; - case 6: - exit(0); - break; - } - } - return 0; -} diff --git a/BT_To_BST/BT_To_BST_OUTPUT.txt b/BT_To_BST/BT_To_BST_OUTPUT.txt deleted file mode 100644 index 0316de9e..00000000 --- a/BT_To_BST/BT_To_BST_OUTPUT.txt +++ /dev/null @@ -1,33 +0,0 @@ -1) InsertNode In Binary tree in LEVELORDER -2) Convert Tree in Binary-Search-Tree Display in INORDER_Traversal -3) Convert Tree in Binary-Search-Tree Display in PREORDER_Traversal -4) Convert Tree in Binary-Search-Tree Display in POSTORDER_Traversal -5) Convert Tree in Binary-Search-Tree Display in LEVELORDER_Traversal -6) Exit -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 12 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 14 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 1 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 14 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 87 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 5 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 153 -Enter your choice :1 -Enter Node in Binary Value in LEVELORDER: 6 -Enter your choice :2 -your Binary-Search-Tree in INORDER_Traversal is...1 5 6 12 14 14 87 153 -Enter your choice :3 -your Binary-Search-Tree in PREORDER_Traversal is...12 1 5 6 14 14 87 153 -Enter your choice :4 -your Binary-Search-Tree in POSTORDER_Traversal is...6 5 1 14 153 87 14 12 -Enter your choice :5 -your Binary-Search-Tree in LEVELORDER_Traversal is...12 1 14 5 14 87 6 153 -Enter your choice :6 - -Press any key to continue . . . \ No newline at end of file diff --git a/Backtracking/NQueen.cpp b/Backtracking/NQueen.cpp deleted file mode 100644 index 6042d909..00000000 --- a/Backtracking/NQueen.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include -#define N 5 -using namespace std; - -void printSolution(int board[N][N]) -{ - int i,j; - for(i=0;i=0 && j>=0 ; i-- ,j--) - { - if(board[i][j]) - return false; - } - for(i=row,j = col;i=0 ;i++,j--) - { - if(board[i][j]) - return false; - } - return true; -} - -bool solveNQUtil(int board[N][N], int col) -{ - if (col >= N) - return true; - for (int i = 0; i < N; i++) - { - if ( isSafe(board, i, col) ) - { - board[i][col] = 1; - if ( solveNQUtil(board, col + 1) ) - return true; - board[i][col] = 0; - } - } - return false; -} - -bool solveQueen() -{ - int board[N][N] ,i,j; - for(i=0;i -using namespace std; - -bool reachDestination(int maze[][10], int solution[][10], int i, int j, int n){ - //Base Case - //reached the destination - if(i == n-1 && j == n-1){ - solution[i][j] = 1; - for(int x = 0; x < n; x++){ - for(int y = 0; y < n; y++){ - cout<>n; - int maze[10][10] = {0}; - int solution[10][10] = {0}; - for(int i = 0; i < n; i++){ - for(int j = 0; j < n; j++){ - cin>>maze[i][j]; - } - } - reachDestination(maze, solution, 0, 0, n); - return 0; -} - diff --git a/Betting_Game/Betting_Game.c b/Betting_Game/Betting_Game.c deleted file mode 100644 index 83319797..00000000 --- a/Betting_Game/Betting_Game.c +++ /dev/null @@ -1,86 +0,0 @@ -#include -#include -#include -int n,b,r,*a; - -void start(){ - srand(time(0)); - - a = (int*)malloc(3*sizeof(int)); - *a=rand()%3; - *(a+1)= rand()%3; - *(a+2)= rand()%3; - - if(n>0){ - - printf("you have currently $%d \n",n); - printf("enter the bet amount $"); - scanf("%d",&b); - if(b<=n){ - printf("find the place of queen[chose 1,2,3] : "); - scanf("%d",&r); - if(*a==(r-1) ){ - printf("congratulations you win!\n"); - n=n-b+(3*b); - printf("now you have $%d\n",n); - printf("______________________________\n"); - } - else{ - printf("Better luck Next time\n"); - n=n-b; - printf("now you have $%d \n",n); - printf("______________________________\n"); - } - }else{ - printf("you have only $%d and you Bet $%d \n",n,b); - - } - - } - else{ - printf("you are not eligible to play game \n you ave no money\n"); - } - free(a); - -} -int main(){ - - - -printf("______________________________\n"); -printf(" BETTING GAME\n"); -printf("______________________________\n"); -printf(" ***** ***** *****\n"); -printf(" * * * * * *\n"); -printf(" * j * * Q * * K *\n"); -printf(" * * * * * *\n"); -printf(" ***** ***** *****\n"); -printf("______________________________\n"); -printf("rules : \n"); -printf("1) you have to chose between 1 to 3 \n"); -printf("2) you are allow to play till you have $0 \n"); -printf("3) if you will win then you will get 3*(BET AMOUNT)\n\n\n"); -printf("how many amount you have $"); -scanf("%d",&n); -int f; -f=n; - - printf("\n\n*******************************************\n"); - printf(" GAME START \n"); - printf("*******************************************\n\n"); -//printf("you want to play game(y/n):"); -//char m; -//scanf("%c",&m); -while(n!=0){ -start(); -//printf("you want to play game again!(y/n):"); -//scanf("%c",&m); -} -printf("\n\n\n\nyou come with $%d\n",f); -printf("now you have $%d\n\n\n",n); -printf("thank you for play!\n\n\n"); -return 0; - -} - - diff --git a/Betting_Game/Betting_Game_Output.txt b/Betting_Game/Betting_Game_Output.txt deleted file mode 100644 index 52c2b3d2..00000000 --- a/Betting_Game/Betting_Game_Output.txt +++ /dev/null @@ -1,66 +0,0 @@ -______________________________ - BETTING GAME -______________________________ - ***** ***** ***** - * * * * * * - * j * * Q * * K * - * * * * * * - ***** ***** ***** -______________________________ -rules : -1) you have to chose between 1 to 3 -2) you are allow to play till you have $0 -3) if you will win then you will get 3*(BET AMOUNT) - - -how many amount you have $15 - - -******************************************* - GAME START -******************************************* - -you have currently $15 -enter the bet amount $4 -find the place of queen[chose 1,2,3] : 1 -Better luck Next time -now you have $11 -______________________________ -you have currently $11 -enter the bet amount $7 -find the place of queen[chose 1,2,3] : 3 -congratulations you win! -now you have $25 -______________________________ -you have currently $25 -enter the bet amount $20 -find the place of queen[chose 1,2,3] : 2 -Better luck Next time -now you have $5 -______________________________ -you have currently $5 -enter the bet amount $3 -find the place of queen[chose 1,2,3] : 2 -Better luck Next time -now you have $2 -______________________________ -you have currently $2 -enter the bet amount $2 -find the place of queen[chose 1,2,3] : 3 -Better luck Next time -now you have $0 -______________________________ - - - - -you come with $15 -now you have $0 - - -thank you for play! - - - -Process returned 0 (0x0) execution time : 74.211 s -Press any key to continue. diff --git a/Binary Tree in cpp/BinaryTree.cpp b/Binary Tree in cpp/BinaryTree.cpp deleted file mode 100644 index 659653f7..00000000 --- a/Binary Tree in cpp/BinaryTree.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include -using namespace std; -class Node { - public: - char data; - Node* left, * right; -}; -//Creating the tree -Node* binaryCreate(char data) { - Node* node = new Node; - node->data = data; - node->left = node->right = NULL; - return node; -} -//For subsequent elements -Node* find(char data) { - Node* node = new Node; - node->data = data; - node->left = node->right = NULL; - return node; -} -//To insert element into the tree -Node* binaryInsert(char arr[], Node* next, int i, int size) { - if (i < size) { - Node* temp = find(arr[i]); - next = temp; - next->left = binaryInsert(arr, next->left, 2 * i + 1, size); - next->right = binaryInsert(arr, next->right, 2 * i + 2, size); - } - return next; -} - -//To find and print element -void binaryPrint(Node* next, char val) { - char key = val; - if(next != NULL){ - binaryPrint(next->left, key); - if(next->data==val){ - cout << next->data << " "; - } - binaryPrint(next->right, key); - } -} - -void binaryTrav(Node* next) { - if (next != NULL){ - binaryTrav(next->left); - cout << next->data <<" "; - binaryTrav(next->right); - } -} -//Main function -int main() { - char chars[] = {'B','D','R','T','E','M','N','P'}; //input into the tree - int key; - char val; - Node* root = binaryCreate(chars[0]); - int n = sizeof(chars)/sizeof(chars[0]); - root = binaryInsert(chars, root, 0, n); - cout << "Inorder traversal:"; - binaryTrav(root); - cout << "Enter index of element for searching"; - cin >> key; - val = chars[key]; - binaryPrint(root, chars[key]); - -} diff --git a/Binry_Search_Tree/Binary_Search_Tree.c b/Binry_Search_Tree/Binary_Search_Tree.c deleted file mode 100644 index 7deafd06..00000000 --- a/Binry_Search_Tree/Binary_Search_Tree.c +++ /dev/null @@ -1,276 +0,0 @@ -#include -#include - -struct BSTnode{ - int Data; - struct BSTnode* LeftNode; - struct BSTnode* RightNode; -}; - - struct BSTnode* InsertNode(struct BSTnode* Root,int Data){ - struct BSTnode *temp,*NewNode; - NewNode = (struct BSTnode*)malloc(sizeof(struct BSTnode)); - if(NewNode == NULL){ - printf("Sorry Malloc is fail...!!!\n"); - return Root; - } - - NewNode->Data = Data; - NewNode->LeftNode = NULL; - NewNode->RightNode = NULL; - - - temp = Root; - - /*while (temp != NULL ) { - if(temp->Data > Root->Data){ - temp = Root->RightNode; - }else{ - temp = Root->LeftNode; - } - } - temp = NewNode;*/ - - if(Root == NULL){ - Root = NewNode; - return Root; - }else if(Data > Root->Data){ - Root->RightNode = InsertNode(Root->RightNode,Data); - }else{ - Root->LeftNode = InsertNode(Root->LeftNode,Data); - } - return temp; -} - -int Search(struct BSTnode* Root,int Data){ - if(Root == NULL) return 0; - if(Root->Data == Data) return 1; - else if(Root->Data < Data) return Search(Root->RightNode,Data); - else return Search(Root->LeftNode,Data); - -/* while(Data != Root->Data && Root != NULL){ - - if(Data > Root->Data) - Root = Root->RightNode; - else - Root = Root->LeftNode; - } - if(Root == NULL){ - printf("Node Not Avalable.....\n"); - return 0; - }else{ - return 1; - }*/ - -} - -int FindMin(struct BSTnode *Root){ - if(Root->LeftNode == NULL) - return Root->Data; - else - FindMin(Root->LeftNode); - -/* while(Root != NULL){ - Root = Root->LeftNode; - } - Return Root->Data;*/ - -} - -int FindMax(struct BSTnode *Root){ - if(Root->RightNode == NULL) - return Root->Data; - else - FindMax(Root->RightNode); - -/* while(Root != NULL){ - Root = Root->RightNode; - } - return Root->Data;*/ -} - -int MaxHight(struct BSTnode *Root){ - int L_Hight=0,R_Hight=0; - if(Root == NULL) - return -1; - if(Root->LeftNode == NULL && Root->RightNode == NULL) - return 0; - L_Hight = MaxHight(Root->LeftNode); - R_Hight = MaxHight(Root->RightNode); - if(L_Hight > R_Hight) - return L_Hight+1; - else - return R_Hight+1; -} - - void INORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - INORDER_Traversal(Root->LeftNode); - printf("%d ",Root->Data); - INORDER_Traversal(Root->RightNode); - } - - void PREORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - printf("%d ",Root->Data); - PREORDER_Traversal(Root->LeftNode); - PREORDER_Traversal(Root->RightNode); - } - - void POSTORDER_Traversal(struct BSTnode *Root){ - if(Root == NULL) - return; - POSTORDER_Traversal(Root->LeftNode); - POSTORDER_Traversal(Root->RightNode); - printf("%d ",Root->Data); -} -int front=-1,rear=-1; -#define MaxSize 100 -struct BSTnode* Q[MaxSize]; - -void InQueue(struct BSTnode* Data){ - if(rear == MaxSize){ - printf("Sorry Queue is Full\n"); - }else{ - if(front == -1 ) front++; - Q[++rear] = Data; - } -} - -struct BSTnode* Dequeue(){ - //if(front == -1) return - if(front == rear){ - struct BSTnode* r = Q[front]; - front = -1; - rear = -1; - return r; - }else{ - return Q[front++]; - } -} - -void LEVELORDER_Traversal(struct BSTnode *Root){ - InQueue(Root); - struct BSTnode *Temp; - while (front != -1) { - Temp = Dequeue(); - if( Temp != NULL ){ - InQueue(Temp->LeftNode); - InQueue(Temp->RightNode); - printf("%d ",Temp->Data); - } - } - printf("\n"); - } - -struct BSTnode * DeleteNode(struct BSTnode* Root,int key){ -struct BSTnode *Temp; - if(Root == NULL ) - return Root; - if(key > Root->Data) - Root->RightNode = DeleteNode(Root->RightNode,key); - else if(key < Root->Data) - Root->LeftNode = DeleteNode(Root->LeftNode,key); - else{ // Root->Data == key; - if(Root->LeftNode == NULL && Root->RightNode == NULL){ - // node with 0 child - free(Root); - return NULL; - } - else if(Root->LeftNode == NULL){ - // node with 1 child - Temp = Root->RightNode; - free(Root); - return Temp; - }else if(Root->RightNode == NULL){ - // node with 1 child - Temp = Root->LeftNode; - free(Root); - return Temp; - }else{ - // node with 2 childe - // find min in right sub-Tree - Temp = Root->RightNode; - while(Temp->LeftNode != NULL){ - Temp = Temp->LeftNode; - } - Root->Data = Temp->Data; - Root->RightNode = DeleteNode(Root->RightNode,Temp->Data); - } - return Root; - } - -} - -int main(){ - int c,n,i; - struct BSTnode *Root= NULL; - printf("1) InsertNode\n2) Hight of Tree\n3) Find Max Data\n4) Find Min Data\n5) Search Data\n6) INORDER_Traversal\n7) PREORDER_Traversal\n8) POSTORDER_Traversal\n9) LEVELORDER_Traversal\n10) DeleteNode\n11) Exit\n\n"); - while (c != 11) { - printf("Enter Your choice :"); - scanf("%d",&c); - switch (c) { - case 1: - printf("Enter Data :"); - scanf("%d",&n); - Root = InsertNode(Root,n); - break; - case 2: - i = MaxHight(Root); - printf("Hight Of tree is %d\n",i); - break; - case 3: - i = FindMax(Root); - printf("Max Data of Tree is %d\n",i); - break; - case 4: - i = FindMin(Root); - printf("Min Data of tree is %d\n",i); - break; - case 5: - printf("Find Data in Tree :"); - scanf("%d",&n); - i= Search(Root,n); - if(i == 1){ - printf("Data found\n"); - }else{ - printf("Data Not found\n"); - } - break; - case 6: - printf("INORDER_Traversal of Tree is...."); - INORDER_Traversal(Root); - printf("\n"); - break; - case 7: - printf("PREORDER_Traversal of Tree is...."); - PREORDER_Traversal(Root); - printf("\n"); - break; - case 8: - printf("POSTORDER_Traversal of Tree is...."); - POSTORDER_Traversal(Root); - printf("\n"); - break; - case 9: - printf("LEVELORDER_Traversal of Tree is...."); - LEVELORDER_Traversal(Root); - break; - case 10: - printf("which Node you want to delete :"); - scanf("%d",&n); - DeleteNode(Root,n); - break; - case 11: - exit(0); - break; - default: - printf("Enter valid choice between 1-10\n"); - break; - } - - } - return 0; -} diff --git a/Binry_Search_Tree/Binary_Search_Tree.js b/Binry_Search_Tree/Binary_Search_Tree.js deleted file mode 100644 index 34f46b8e..00000000 --- a/Binry_Search_Tree/Binary_Search_Tree.js +++ /dev/null @@ -1,103 +0,0 @@ -class BinarySearchTree { - constructor(value, leftSubTree = null, rightSubTree = null) { - if (!value || typeof value !== 'number') { - throw new Error('Type of data not supported'); - } - - /** - * @type {number} - */ - this.value = value; - - /** - * @type {BinarySearchTree} - */ - this.leftSubTree = leftSubTree; - - /** - * @type {BinarySearchTree} - */ - this.rightSubTree = rightSubTree; - } - - insertNode(newValue) { - if (typeof newValue === 'number') { - if (newValue < this.value) { - if (this.leftSubTree == null) { - const newLeftSubTree = new BinarySearchTree(newValue); - this.leftSubTree = newLeftSubTree; - } else { - this.leftSubTree.insertNode(newValue); - } - } else { - if (this.rightSubTree == null) { - const newRightSubTree = new BinarySearchTree(newValue); - this.rightSubTree = newRightSubTree; - } else { - this.rightSubTree.insertNode(newValue); - } - } - } - } - - search(value) { - let searched = false; - if (value == this.value) { - searched = true; - } else { - if (this.leftSubTree != null) { - searched = this.leftSubTree.search(value); - } else if (this.rightSubTree != null) { - searched = this.rightSubTree.search(value); - } - } - return searched; - } - - findMin() { - let minValue = this.value; - if (this.leftSubTree != null) { - minValue = this.leftSubTree.findMin(); - } - - return minValue; - } - - findMax() { - let maxValue = this.value; - if (this.rightSubTree != null) { - maxValue = this.rightSubTree.findMax(); - } - return maxValue; - } - - preorder() { - console.log(this.value); - if (this.leftSubTree != null) { - this.leftSubTree.preorder(); - } - if (this.rightSubTree != null) { - this.rightSubTree.preorder(); - } - } - - inorder() { - if (this.leftSubTree != null) { - this.leftSubTree.inorder(); - } - console.log(this.value); - if (this.rightSubTree != null) { - this.rightSubTree.inorder(); - } - } - - postorder() { - if (this.leftSubTree != null) { - this.leftSubTree.postorder(); - } - if (this.rightSubTree != null) { - this.rightSubTree.postorder(); - } - console.log(this.value); - } -} diff --git a/Binry_Search_Tree/Binary_Search_Tree.py b/Binry_Search_Tree/Binary_Search_Tree.py deleted file mode 100644 index 40511fb9..00000000 --- a/Binry_Search_Tree/Binary_Search_Tree.py +++ /dev/null @@ -1,37 +0,0 @@ -#Defining node as a class and initializing -class Node: - def __init__(self, key): - self.left = None - self.right = None - self.val = key - -#Inserting a node in the BST -def insert_node(root, node): - if root is None: - root = node - else: - if root.val > node.val: - if root.left is None: - root.left = node - else: - insert_node(root.left, node) - else: - if root.right is None: - root.right = node - else: - insert_node(root.right, node) - -#Inorder Traversal of BST -def inorder(root): - if root: - inorder(root.left) - print(root.val, end=" ") - inorder(root.right) - -#User input for root and subsequent nodes -r = Node(int(input("Enter root node: "))) -temp = input("Enter subsequent nodes: ").split() -for i in temp: - insert_node(r, Node(int(i))) -print("Inorder", end=" ") -inorder(r) diff --git a/Binry_Search_Tree/Binary_Search_tree_Output.txt b/Binry_Search_Tree/Binary_Search_tree_Output.txt deleted file mode 100644 index 7be40af1..00000000 --- a/Binry_Search_Tree/Binary_Search_tree_Output.txt +++ /dev/null @@ -1,71 +0,0 @@ -1) InsertNode -2) Hight of Tree -3) Find Max Data -4) Find Min Data -5) Search Data -6) INORDER_Traversal -7) PREORDER_Traversal -8) POSTORDER_Traversal -9) LEVELORDER_Traversal -10) DeleteNode -11) Exit - -Enter Your choice :1 -Enter Data :50 -Enter Your choice :1 -Enter Data :60 -Enter Your choice :1 -Enter Data :40 -Enter Your choice :1 -Enter Data :55 -Enter Your choice :1 -Enter Data :45 -Enter Your choice :1 -Enter Data :35 -Enter Your choice :1 -Enter Data :47 -Enter Your choice :1 -Enter Data :70 -Enter Your choice :1 -Enter Data :67 -Enter Your choice :1 -Enter Data :52 -Enter Your choice :1 -Enter Data :57 -Enter Your choice :2 -Hight Of tree is 3 -Enter Your choice :3 -Max Data of Tree is 70 -Enter Your choice :4 -Min Data of tree is 35 -Enter Your choice :5 -Find Data in Tree :45 -Data found -Enter Your choice :5 -Find Data in Tree :43 -Data Not found -Enter Your choice :6 -INORDER_Traversal of Tree is....35 40 45 47 50 52 55 57 60 67 70 -Enter Your choice :7 -PREORDER_Traversal of Tree is....50 40 35 45 47 60 55 52 57 70 67 -Enter Your choice :8 -POSTORDER_Traversal of Tree is....35 47 45 40 52 57 55 67 70 60 50 -Enter Your choice :9 -LEVELORDER_Traversal of Tree is....50 40 60 35 45 55 70 47 52 57 67 -Enter Your choice :10 -which Node you want to delete :50 -Enter Your choice :6 -INORDER_Traversal of Tree is....35 40 45 47 52 55 57 60 67 70 -Enter Your choice :10 -which Node you want to delete :60 -Enter Your choice :6 -INORDER_Traversal of Tree is....35 40 45 47 52 55 57 67 70 -Enter Your choice :9 -LEVELORDER_Traversal of Tree is....52 40 67 35 45 55 70 47 57 -Enter Your choice :10 -which Node you want to delete :52 -Enter Your choice :9 -LEVELORDER_Traversal of Tree is....55 40 67 35 45 57 70 47 -Enter Your choice :11 - -Press any key to continue . . . \ No newline at end of file diff --git a/Binry_Search_Tree/CheckBST.java b/Binry_Search_Tree/CheckBST.java deleted file mode 100644 index f57c4fe8..00000000 --- a/Binry_Search_Tree/CheckBST.java +++ /dev/null @@ -1,34 +0,0 @@ -package bst_operations; - -public class CheckBST { - public static void main(String[] args) { - new CheckBST().demo(); - } - - private void demo() { - Node n = new Node(4); - // left - n.left = new Node(2); - n.left.left = new Node(1); - n.left.right = new Node(3); - - //right - n.right = new Node(5); - System.out.println(isBST(n, Integer.MIN_VALUE, Integer.MAX_VALUE)); - } - - private boolean isBST(Node n, int min, int max) { - if (n == null) { - return true; - } - if (n.data < min || n.data > max) { - return false; - } - if(n.data == max || n.data == min) { - System.out.println("duplication of data"); - return false; - } - return isBST(n.left, min, n.data) && isBST(n.right, n.data, max); - } -} - diff --git a/Binry_Search_Tree/CorrectBST.java b/Binry_Search_Tree/CorrectBST.java deleted file mode 100644 index 9b54836c..00000000 --- a/Binry_Search_Tree/CorrectBST.java +++ /dev/null @@ -1,56 +0,0 @@ -package bst_operations; - -import java.util.ArrayList; - -/** - * Two nodes of a BST are swapped, correct the BST - */ -public class CorrectBST { - public static void main(String[] args) { - new CorrectBST().demo(); - } - - private void demo() { - Node n = new Node(10); - n.left = new Node(5); - n.left.left = new Node(2); - n.left.right = new Node(20); - n.right = new Node(8); - /* - 10 - / \ - 5 8 - / \ - 2 20 -*/ - ArrayList list = new ArrayList(); - display(n); - balanceBST(n, list, Integer.MIN_VALUE, Integer.MAX_VALUE); - System.out.println(); - list.get(0).data = list.get(0).data + list.get(1).data; - list.get(1).data = list.get(0).data - list.get(1).data; - list.get(0).data = list.get(0).data - list.get(1).data; - System.out.println("After"); - display(n); - } - - private void display(Node n) { - if (n != null) { - display(n.left); - System.out.print(n.data + "\t"); - display(n.right); - } - } - - private void balanceBST(Node n, ArrayList list, int min, int max) { - if (n == null) { - return; - } - if (n.data > max || n.data < min) { - list.add(n); - } - balanceBST(n.left, list, min, n.data); - balanceBST(n.right, list, n.data, max); - - } -} diff --git a/Binry_Search_Tree/FindAncestor.java b/Binry_Search_Tree/FindAncestor.java deleted file mode 100644 index df2bd185..00000000 --- a/Binry_Search_Tree/FindAncestor.java +++ /dev/null @@ -1,74 +0,0 @@ -package bst_operations; - -/** - * Created by kalsi on 30/08/17. - * find lowest ancestor of two items - * I assumed both the elements are present in the tree - */ -public class FindAncestor { - public static void main(String[] args) { - new FindAncestor().demo(); - } - - private void demo() { - - Node n = new Node(8); - // left - n.left = new Node(3); - n.left.left = new Node(1); - n.left.right = new Node(6); - n.left.right.left = new Node(4); - n.left.right.right = new Node(7); - - //right - n.right = new Node(10); - n.right.right = new Node(14); - n.right.right.left = new Node(13); - - /* - 8 - 3 10 - 1 6 14 - 4 7 13 - * - * */ - int m1 = 4; - int m2 = 7; - Node ancestor = lowestAncestor(n, m1, m2); - System.out.println("Lowest ancestor is : " + ancestor.data); - System.out.println("Distance from root to ancestor is: " + findDistance(n, ancestor)); - } - - private int findDistance(Node n, Node ancestor) { - return findDistanceUtil(n,ancestor, 0); - } - - private int findDistanceUtil(Node n, Node ancestor, int level) { - if(n == null || ancestor == null) { - return 0; - } - if(n.data == ancestor.data) { - return level; - } - level++; - return findDistanceUtil(n.left, ancestor, level) + findDistanceUtil(n.right, ancestor, level); - - } - - private Node lowestAncestor(Node n, int m1, int m2) { - if (n == null) { - return null; - } - if (n.data == m2 || n.data == m1) { - return n; - } - Node left = lowestAncestor(n.left, m1, m2); - Node right = lowestAncestor(n.right, m1, m2); - if (left != null && right != null) { - return n; - } - return left == null ? right : left; - } - - -} diff --git a/Binry_Search_Tree/InorderSuccessor.java b/Binry_Search_Tree/InorderSuccessor.java deleted file mode 100644 index 12fddfca..00000000 --- a/Binry_Search_Tree/InorderSuccessor.java +++ /dev/null @@ -1,52 +0,0 @@ -package bst_operations; - -public class InorderSuccessor { - public static void main(String[] args) { - new InorderSuccessor().demo(); - } - - private void demo() { - Node n = new Node(8); - // left - n.left = new Node(3); - n.left.left = new Node(1); - n.left.right = new Node(6); - n.left.right.left = new Node(4); - n.left.right.right = new Node(7); - - //right - n.right = new Node(10); - n.right.right = new Node(14); - n.right.right.left = new Node(13); - - /* - 8 - 3 10 - 1 6 14 - 4 7 13 - * - * */ - System.out.println(getNextSuccessor(n, new Node(8))); - } - - private Integer getNextSuccessor(Node root, Node target) { - if (root == null || target == null) { - return null; - } - Boolean found = false; - Node candidate = null; - Node current = root; - while (current != null) { - if (current.data == target.data) { - found = true; - current = current.right; - } else if (current.data > target.data) { - candidate = current; - current = current.left; - } else { - current = current.right; - } - } - return found && candidate != null ? candidate.data : null; - } -} diff --git a/Binry_Search_Tree/LargestBST.java b/Binry_Search_Tree/LargestBST.java deleted file mode 100644 index bb7000bf..00000000 --- a/Binry_Search_Tree/LargestBST.java +++ /dev/null @@ -1,89 +0,0 @@ -package bst_operations; - - -/** - * Created by kalsi on 06/09/17. - */ -public class LargestBST { - class BSTCount { - Boolean isBST; - int count; - } - - class BST { - int max; - Node n; - - public BST() { - max = -1; - n = null; - } - } - - public static void main(String[] args) { - new LargestBST().demo(); - } - - private void demo() { - Node n = new Node(50); - // left - n.left = new Node(30); - n.left.left = new Node(5); - n.left.right = new Node(20); - - //right - n.right = new Node(60); - n.right.left = new Node(45); - n.right.right = new Node(70); - n.right.right.left = new Node(65); - n.right.right.right = new Node(80); - /* 50 - / \ - 30 60 - / \ / \ - 5 20 45 70 - / \ - 65 80 - */ - largestBST(n); - } - - private void largestBST(Node n) { - BST bst = new BST(); - BSTCount bstCount = new BSTCount(); - largestBSTUtil(n, bst, bstCount); - System.out.println("Largest BST: " + bst.n.data); - System.out.println("Count: " + bst.max); - } - - private void largestBSTUtil(Node n, BST bst, BSTCount bstCount) { - if (n == null) { - return; - } - isBST(n, bstCount); - if (bstCount.isBST && bstCount.count > bst.max) { - bst.max = bstCount.count; - bst.n = n; - } - largestBSTUtil(n.left, bst, bstCount); - largestBSTUtil(n.right, bst, bstCount); - } - - private void isBST(Node n, BSTCount bstCount) { - bstCount.count = 0; - bstCount.isBST = false; - bstCount.isBST = isBSTUtil(n, Integer.MIN_VALUE, Integer.MAX_VALUE, bstCount); - } - - private Boolean isBSTUtil(Node n, int minValue, int maxValue, BSTCount c) { - if (n == null) { - return true; - } - if (minValue < n.data && n.data < maxValue) { - c.count++; - return isBSTUtil(n.left, minValue, n.data, c) && isBSTUtil(n.right, n.data, maxValue, c); - } - - return false; - } -} \ No newline at end of file diff --git a/Binry_Search_Tree/LevelOrder.java b/Binry_Search_Tree/LevelOrder.java deleted file mode 100644 index 4529f020..00000000 --- a/Binry_Search_Tree/LevelOrder.java +++ /dev/null @@ -1,76 +0,0 @@ -package bst_operations; - - -import java.util.*; - -/** - * Created by kalsi on 01/09/17. - */ -public class LevelOrder { - public static void main(String[] args) { - new LevelOrder().demo(); - } - - private void demo() { - - Node n = new Node(8); - // left - n.left = new Node(3); - n.left.left = new Node(1); - n.left.right = new Node(6); - n.left.right.left = new Node(4); - n.left.right.right = new Node(7); - - //right - n.right = new Node(10); - n.right.right = new Node(14); - n.right.right.left = new Node(13); - - /* - 8 - 3 10 - 1 6 14 - 4 7 13 - * - * */ - System.out.println("Without zigzag"); - displayLevelOrder(n, false); //without zigzag - System.out.println("With zigzag"); - displayLevelOrder(n, true); //with zigzag - } - - private void displayLevelOrder(Node n, Boolean zigzag) { - if (n == null) { - return; - } - Boolean flag = true; - Deque parents = new LinkedList(); - parents.add(n); - while (!parents.isEmpty()) { - print(parents, flag, zigzag); - flag = !flag; - int count = parents.size(); - while (count-- > 0) { - Node removedParent = parents.removeFirst(); - if (removedParent.left != null) { - parents.addLast(removedParent.left); - } - if (removedParent.right != null) { - parents.addLast(removedParent.right); - } - } - System.out.println(); - } - } - - private void print(Deque parents, Boolean flag, Boolean zigzag) { - Iterator iterator = parents.descendingIterator(); - if (!zigzag || flag) { - iterator = parents.iterator(); - } - while (iterator.hasNext()) { - System.out.print(iterator.next().data + "\t"); - } - - } -} diff --git a/Binry_Search_Tree/MorrisTraversal.java b/Binry_Search_Tree/MorrisTraversal.java deleted file mode 100644 index f1f55eaa..00000000 --- a/Binry_Search_Tree/MorrisTraversal.java +++ /dev/null @@ -1,64 +0,0 @@ -package bst_operations; - - -/** - * Created by kalsi on 30/08/17. - * Inorder traversal without recursion or stacks - */ -public class MorrisTraversal { - public static void main(String[] args) { - new MorrisTraversal().demo(); - } - - private void demo() { - Node n = new Node(8); - // left - n.left = new Node(3); - n.left.left = new Node(1); - n.left.right = new Node(6); - n.left.right.left = new Node(4); - n.left.right.right = new Node(7); - - //right - n.right = new Node(10); - n.right.right = new Node(14); - n.right.right.left = new Node(13); - - /* - 8 - 3 10 - 1 6 14 - 4 7 13 - * - * */ - inorderIterative(n); - } - - - private void inorderIterative(Node n) { - while (n != null) { - if (n.left == null) { - System.out.print(n.data + "\t"); - n = n.right; - } - Node predecessor = getPredecessor(n); - if (predecessor.right == null) { - predecessor.right = n; - n = n.left; - } else { - predecessor.right = null; - System.out.print(n.data + "\t"); - n = n.right; - } - - } - } - - private Node getPredecessor(Node n) { - Node temp = n.left; - while( temp.right != null && temp.right != n) { - temp = temp.right; - } - return temp; - } -} diff --git a/Binry_Search_Tree/Node.java b/Binry_Search_Tree/Node.java deleted file mode 100644 index fb1343a6..00000000 --- a/Binry_Search_Tree/Node.java +++ /dev/null @@ -1,12 +0,0 @@ -package bst_operations; - -public class Node { - int data; - Node left; - Node right; - - public Node(int d) { - data = d; - } -} - diff --git a/Binry_Search_Tree/PathFromRootToNode.java b/Binry_Search_Tree/PathFromRootToNode.java deleted file mode 100644 index 3eeb94a2..00000000 --- a/Binry_Search_Tree/PathFromRootToNode.java +++ /dev/null @@ -1,63 +0,0 @@ -package bst_operations; - -import java.util.ArrayList; - -/** - * Created by kalsi on 30/08/17. - * Path from root to node - */ -public class PathFromRootToNode { - Boolean found = false; - public static void main(String[] args) { - new PathFromRootToNode().demo(); - } - - private void demo() { - Node n = new Node(8); - // left - n.left = new Node(3); - n.left.left = new Node(1); - n.left.right = new Node(6); - n.left.right.left = new Node(4); - n.left.right.right = new Node(7); - - //right - n.right = new Node(10); - n.right.right = new Node(14); - n.right.right.left = new Node(13); - - /* - 8 - 3 10 - 1 6 14 - 4 7 13 - * - * */ - ArrayList al = new ArrayList(); - findPath(n, 13, al); - display(al); - - } - - private void display(ArrayList al) { - System.out.println("--"); - for (Node n : al) { - System.out.print(n.data + " --> "); - } - System.out.println("NULL"); - } - - private void findPath(Node n, int data, ArrayList al) { - if (n != null && !found) { - al.add(n); - findPath(n.left, data, al); - if (n.data == data) { - found = true; - } - findPath(n.right, data, al); - if (!found) { - al.remove(al.size() - 1); - } - } - } -} diff --git a/C/Searching/BinarySearch.c b/C/Searching/BinarySearch.c deleted file mode 100644 index 2a58ca2a..00000000 --- a/C/Searching/BinarySearch.c +++ /dev/null @@ -1,42 +0,0 @@ -// C program to implement recursive Binary Search -#include - -// A recursive binary search function. It returns -// location of x in given array arr[l..r] is present, -// otherwise -1 -int binarySearch(int arr[], int l, int r, int x) -{ - if (r >= l) { - int mid = l + (r - l) / 2; - - // If the element is present at the middle - // itself - if (arr[mid] == x) - return mid; - - // If element is smaller than mid, then - // it can only be present in left subarray - if (arr[mid] > x) - return binarySearch(arr, l, mid - 1, x); - - // Else the element can only be present - // in right subarray - return binarySearch(arr, mid + 1, r, x); - } - - // We reach here when element is not - // present in array - return -1; -} - -int main(void) -{ - int arr[] = { 2, 3, 4, 10, 40 }; - int n = sizeof(arr) / sizeof(arr[0]); - int x = 10; - int result = binarySearch(arr, 0, n - 1, x); - (result == -1) ? printf("Element is not present in array") - : printf("Element is present at index %d", - result); - return 0; -} diff --git a/C/Searching/InterpolationSearch.c b/C/Searching/InterpolationSearch.c deleted file mode 100644 index 82db90b3..00000000 --- a/C/Searching/InterpolationSearch.c +++ /dev/null @@ -1,57 +0,0 @@ -// C program to implement interpolation search -#include - -// If x is present in arr[0..n-1], then returns -// index of it, else returns -1. -int interpolationSearch(int arr[], int n, int x) -{ - // Find indexes of two corners - int lo = 0, hi = (n - 1); - - // Since array is sorted, an element present - // in array must be in range defined by corner - while (lo <= hi && x >= arr[lo] && x <= arr[hi]) - { - if (lo == hi){ - if (arr[lo] == x) return lo; - return -1; - } - // Probing the position with keeping - // uniform distribution in mind. - int pos = lo + (((double)(hi-lo) / - (arr[hi]-arr[lo]))*(x - arr[lo])); - - // Condition of target found - if (arr[pos] == x) - return pos; - - // If x is larger, x is in upper part - if (arr[pos] < x) - lo = pos + 1; - - // If x is smaller, x is in the lower part - else - hi = pos - 1; - } - return -1; -} - -// Driver Code -int main() -{ - // Array of items on which search will - // be conducted. - int arr[] = {10, 12, 13, 16, 18, 19, 20, 21, 22, 23, - 24, 33, 35, 42, 47}; - int n = sizeof(arr)/sizeof(arr[0]); - - int x = 18; // Element to be searched - int index = interpolationSearch(arr, n, x); - - // If element was found - if (index != -1) - printf("Element found at index %d", index); - else - printf("Element not found."); - return 0; -} diff --git a/C/Searching/LinearSearch.c b/C/Searching/LinearSearch.c deleted file mode 100644 index 9c86389c..00000000 --- a/C/Searching/LinearSearch.c +++ /dev/null @@ -1,26 +0,0 @@ -// C code to linearly search x in arr[]. If x -// is present then return its location, otherwise -// return -1 - -#include - -int search(int arr[], int n, int x) -{ - int i; - for (i = 0; i < n; i++) - if (arr[i] == x) - return i; - return -1; -} - -int main(void) -{ - int arr[] = { 2, 3, 4, 10, 40 }; - int x = 10; - int n = sizeof(arr) / sizeof(arr[0]); - int result = search(arr, n, x); - (result == -1) ? printf("Element is not present in array") - : printf("Element is present at index %d", - result); - return 0; -} diff --git a/C/Searching/TernarySearch.C b/C/Searching/TernarySearch.C deleted file mode 100644 index 652ea1bd..00000000 --- a/C/Searching/TernarySearch.C +++ /dev/null @@ -1,52 +0,0 @@ - -#include -#include -#include - -int TernS(long int arr[], long int l, long int r, long int x) -{ - if (r >= l) - { - int mid1 = l + (r - l) / 3; // We calculate 2 mid points to divide the array into 3 parts - int mid2 = mid1 + (r - l) / 3; - if (arr[mid1] == x) - return mid1; - if (arr[mid2] == x) - return mid2; - if (arr[mid1] > x) - return TernS(arr, l, mid1 - 1, x); // We recursively search the 3 parts - if (arr[mid2] < x) - return TernS(arr, mid2 + 1, r, x); - return TernS(arr, mid1 + 1, mid2 - 1, x); - } - return -1; -} - -void main() -{ - srand(time(NULL)); - long int i, n, l = 0, r, te, bi; - clock_t s, e; - double tertime, bintime; - printf("Enter the number of elements in the array "); - scanf("%ld", &n); // The input is used to randomly generate inputs and decide the number of elements in the array - long int arr[n], x; - arr[0] = rand() % 6; - for (int i = 1; i < n; i++) - { - arr[i] = arr[i - 1] + rand() % 6 + 1; - } - x = arr[rand() % n]; - printf("Element chosen to be searched: %ld ", x); - r = n; - s = clock(); - te = TernS(arr, l, r, x); - e = clock(); - tertime = ((double)(e - s)) / (double)(CLOCKS_PER_SEC); // This calculates the time taken to do the ternary search - s = clock(); - if (te == -1) - printf("\nTernary Search: The element(%ld) is not in the array. Time taken to perform the function is %0.10e.", x, tertime); - else - printf("\nTernary Search: The position of %ld is %ld. Time taken to perform the function is %0.10e.", x, te + 1, tertime); - getch(); -} diff --git a/C/Sorting/Count Sort.c b/C/Sorting/Count Sort.c deleted file mode 100644 index c2047d72..00000000 --- a/C/Sorting/Count Sort.c +++ /dev/null @@ -1,49 +0,0 @@ -#include - -int get_max(int arr[],int n) -{ - int max=arr[0]; - for(int i=1;i=0;i--) - { - s_arr[temp[arr[i]] - 1]=arr[i]; - temp[arr[i]]--; - } -} - -int main() -{ - int n,arr[100],s_arr[100],m; - - printf("Enter size: "); - scanf("%d",&n); - printf("Enter elements: "); - for(int i=0;i -#include -#include -#define MAXS 20 - - -int front = 0,rear= -1,top=-1; -struct Node{ - char car[20]; - struct Node *ptr; - int n; -}; - -struct stack1{ - char soldCar[20]; -}; - -struct stack1 sold[20]; - -struct Node *insCar(struct Node *head){ - struct Node *NewNode; - struct Node *temp; - temp = head; - - NewNode = (struct Node*)malloc(sizeof(struct Node)); - if(NewNode == NULL){ - printf("SORRY MALLOC FAILD\n"); - } - - printf("enter the car brand name :"); - scanf("%s",(NewNode->car)); - - printf("How many %s car u have :",NewNode->car); - scanf("%d",&(NewNode->n)); - printf("\n"); - - NewNode->ptr = NULL; - if(temp == NULL){ - head = NewNode; - }else{ - while(temp->ptr != NULL) - temp = temp->ptr; - temp->ptr = NewNode; - } - - return head; - -} -void push(char c[]){ - strcpy(sold[++top].soldCar,c); -} - -void Buy(struct Node *head){ - printf("\n"); - printf("costumer %d :\n",top+2); - printf("which car u Want to Buy :"); - char costumerCar[20]; - scanf("%s",costumerCar); - struct Node *temp; - temp = head; - while(strcmp(temp->car,costumerCar)){ - temp = temp->ptr; - if(temp == NULL){ - break; - } - } - if(temp == NULL){ - printf("that car Brand is not available\n"); - Buy(head); - - }else{ - if(temp->n == 0){ - printf("Sorry Out of stock\n"); - Buy(head); - } - else{ - (temp->n)--; - push(costumerCar); - - } - } - -} - - -void display(struct Node *head){ - struct Node *temp; - temp = head; - printf("\n\n"); - - while(temp != NULL){ - printf("car : %s | amount : %d\n", temp->car,temp->n); - temp = temp->ptr; - } - } -int main(){ - struct Node *Head; - Head = NULL; - printf("**********************************\n\tWelcome to car shop\n**********************************"); - int b,i; - printf("\nHow many car Brand u Want to add :"); - scanf("%d",&b); - printf("\n"); - for(i=0;i -#include -#include -using namespace std; - -//Declaring Node -struct node -{ - int data; - struct node *next; - struct node *prev; -}*begin, *end; -int index = 0; - -//Declaring a Circular Doubly Linked List Class -class circular_dlist -{ - public: - node *create_node(int); - void insert_begin(); - void insert_end(); - void insert_position(); - void insert_before(); - void insert_after(); - void delete_begin(); - void delete_end(); - void delete_position(); - void show_list(); - - circular_dlist() - { - begin = NULL; - end = NULL; - } -}; - -//Menu driven main function -int main() -{ - int choice; - circular_dlist clist; - while (1) - { - cout<<"\n-----------------------"<>choice; - switch(choice) - { - case 1: - clist.insert_begin(); - break; - case 2: - clist.insert_end(); - break; - case 3: - clist.insert_position(); - break; - case 4: - clist.insert_before(); - break; - case 5: - clist.insert_after(); - break; - case 6: - clist.delete_begin(); - break; - case 7: - clist.delete_end(); - break; - case 8: - clist.delete_position(); - break; - case 9: - clist.show_list(); - break; - case 10: - exit(1); - default: - cout<<"Not a valid choice"<data = info; - tmp->next = NULL; - tmp->prev = NULL; - return tmp; -} - -//Function to insert a node at the beginning -void circular_dlist::insert_begin() -{ - int info; - cout<>info; - struct node *tmp; - tmp = create_node(info); - if (begin == end && begin == NULL) - { - cout<<"List created and first element inserted!"<next = end->next = NULL; - begin->prev = end->prev = NULL; - } - else - { - tmp->next = begin; - begin->prev = tmp; - begin = tmp; - begin->prev = end; - end->next = begin; - cout<<"Node inserted"<>info; - struct node *tmp; - tmp = create_node(info); - if (begin == end && begin == NULL) - { - cout<<"List created and first element inserted!"<next = end->next = NULL; - begin->prev = end->prev = NULL; - } - else - { - end->next = tmp; - tmp->prev = end; - end = tmp; - begin->prev = end; - end->next = begin; - } -} - -//Function to insert a node at a specific position by index -void circular_dlist::insert_position() -{ - int info, pst, i; - cout<>info; - cout<>pst; - struct node *tmp, *s, *p; - tmp = create_node(info); - if (begin == end && begin == NULL) - { - if (pst == 1) - { - begin = end = tmp; - begin->next = end->next = NULL; - begin->prev = end->prev = NULL; - } - else - { - cout<<"Index inserted is out of range"<next; - if (i == pst - 1) - { - p->next = tmp; - tmp->prev = p; - tmp->next = s; - s->prev = tmp; - cout<<"Node inserted"<>info; - s = begin; - for (i = 0;i < index;i++) - { - pst++; - if (s->data == info) - { - cond = true; - break; - } - s = s->next; - } - if (!cond) - { - cout<<"No match found in the list"<>info1; - struct node *tmp, *p; - tmp = create_node(info1); - if (begin == end && begin == NULL) - { - if (pst == 1) - { - begin = end = tmp; - begin->next = end->next = NULL; - begin->prev = end->prev = NULL; - } - } - else - { - s = begin; - for (i = 1;i <= index;i++) - { - p = s; - s = s->next; - if (i == pst - 1) - { - p->next = tmp; - tmp->prev = p; - tmp->next = s; - s->prev = tmp; - cout<<"Node inserted"<>info; - s = begin; - for (i = 0;i < index;i++) - { - pst++; - if (s->data == info) - { - cond = true; - break; - } - s = s->next; - } - if (!cond) - { - cout<<"No match found in the list"<>info1; - struct node *tmp, *p; - tmp = create_node(info1); - if (begin == end && begin == NULL) - { - if (pst == 1) - { - begin = end = tmp; - begin->next = end->next = NULL; - begin->prev = end->prev = NULL; - } - } - else - { - s = begin; - for (i = 1;i <= index;i++) - { - p = s; - s = s->next; - if (i == pst - 1) - { - p->next = tmp; - tmp->prev = p; - tmp->next = s; - s->prev = tmp; - cout<<"Node inserted"<next = s->next; - s->next->prev = end; - begin = s->next; - free(s); - cout<<"First Node Deleted"<next; - p = s->prev; - } - p->next = s->next; - s->next->prev = p; - end = p; - index--; - free(s); - cout<<"Node Deleted"<>pst; - if (index < pst) - { - cout<<"Index inserted is out of range"<next = s->next; - s->next->prev = end; - begin = s->next; - free(s); - cout<<"Node Deleted"<next; - p = s->prev; - } - p->next = s->next; - s->next->prev = p; - if (pst == index) - { - end = p; - } - index--; - free(s); - cout<<"Node Deleted"<data<<"<->"; - s = s->next; - } - cout<data<d*iE;12*E!&l?z!>LAe;t83al7>i>Z6FNR6`=@1-jp5Te zo{{}z94(lN;f&B}9nZ!o`CJTVW0;BIoa~;L>3j?qV)%?KFLu!Q3o*PH!)1}W5{HSo zIC9AAP#Pj->tzxxt07wUOxM#8R(4)P<4YA)QI}2E)eySGYb~dt;gn@t-jftdX8X^R zWSl&uTPH1Bov9S(lzYycEAXUw#xrxvQ)VgHN0V7!KrdCwi{qj{R&q)cu49YAWIy%m zR(ZTw@>c!*ENxlkiAteBBSq7)HSA4Znp`rkn(2aRFQjKY*RmIe`_Jo`*ASm^DsE0q zSYo>)W4XCX!E~RK7YvF_0uNy!fd_Fkfsf0Sk|~M)1diaSj>QBlED`o}#WS3FW7MhG z`Ld4X1PUl>=&TtYzm`)a&vNVpY%IyWqoFNp=hZa|PtR9HHMIL870)W9XL6=(D>s1> zUJ@kq=)Q5=Q?B7HDnkMwHhr`SlyRIm?sMwiiD^0Ae{kMyQ?=0OJAX9RL$PCw*6Qh2uL`Lx1h4?x}Oiu0PkAMXuP5Y_BZXvisGslW#>^*1FSy67rEVGwHl9~RDjxR}K zT-R`<7Ddax>MX0E4^@FrP=(_%_+O#1Nyk~Plr$u=Qu~>LSuQKS=H2=@1UjlY__S%~ z3#xpiDmZ-qlj~0I5j?kAQoFF%XV-Q}?^lsA3xyfWQ^Pvm(s1;?_w9yF!@>X0heQ1G z^zp+J|NHa? zBB}1*$2Sm7b#I{I4Q;FY2k1!s7SV35$uPaX^^d9u<-+e%O9+FU2hqg21rgE~G@}cx z=s`QNb`WDHzXp5wmEMa}*oP79N80BOZSgXsqf-O<1mh1FnK--Bhgf0_V|#A zl|Y+)pgqL+uaCyqQ-|>YdU22tdg(2LzBxpU{2RfO5&BIqwt^V@5f+RD*-UusiB*tV zD^&@|AJcA_BeaGGWf{7Og91g?gPbBa(Q+GlM{E;~>sXd!4sst8LV6^X3ePeQ5`{pn zdpdQIe32_WTgPL8Ov4&t)nM(y_F(`)3Hq?-X~%S{0+o|fQ_P!Cn-Mn7=t&+ z2dD82-Tyq_H-{4_;v`%=j#n^*>lnt{bjv%)P{Rnm&wool!kF)%CNvBlZ|xh^5tl6E z2cYU4yvO{MEW0dkrmh!S%=rqOCrt+`OaEHD^Yhe(^>6*|L3ipyHoy(P6^G5 zS41{4-F=HDswsFFF|J==0=~$%T_F&YxbrxTd1SG`n?)aS6ydhRO+?A>T7Y$mD#Stk z0)ivJBrrRDt2JzTWF3)k&1!=$xawG++E?O?$M(Z84O-gpP(_s&7qT`9X=)Bl-2Yb%6t)7g? zO&4#3?hQCjM!TZFpa$@N85MFwIr@VAP(Uw;$i8inhJmhzP3&LC(7+}hxKT~$kMVXL zNnz~vmj}4yea{Ct0Qe_Oa(R$Tp}nMpXoNR$=wzfT@;e+B(zbeYYqr))=J5a_yv{(r z$D|nZG2X2t_hdg}`-^EYy z6a0+7pX1l~CGp(CAMq>v3BSQ#aM$=0){ - queue_arr[length--]=-1729; //this number cannot be the value of any index. Make it settable. - } - start=-1; - end=-1; - } - - - //overloaded constructor that takes the prohibited value of the queue - public CircularQueue(int length,int c){ - queue_arr=new int[length--]; - this.c=c; - size=length; - while(length>=0){ - queue_arr[length]=c; //this number cannot be the value of any index. Make it settable. - } - start=-1; - end=-1; - } - - //enter an element in the end of queue - public void pushEnd(int value){ - try{ - if( end==start && end !=-1 && queue_arr[end]!=c ) - { - System.out.println("Out of Bounds"); - } - else if(end==start && start==-1){ - end=start=0; - queue_arr[end]=value; - end++; - } - else - { - if(end==size){ - end=0; - } - - queue_arr[end]=value; - end++; - if(end==size){ - end =0;//when elements have not been popped out from queue - } - } - } - - catch(Exception e){ - System.err.println(e); - } - } - - - - //pull out an element from the queue - public int popFront(){ - if(start==size){ - start=0; - } - if(start==-1 || (start==end && queue_arr[start]==c)){ - System.err.println("IndexOutOfBounds"); - - // throw new emptyStackException; - return -1; //Some developer desired constant (not necessary) - } - int ret= queue_arr[start]; - queue_arr[start++]=c; - return ret; - - } - - //checks if the stack is empty - public boolean isEmpty(){ - return start==end && (start==-1 || queue_arr[start]==c); - } - - //checks if stack is full - public boolean isFull(){ - return start==end && queue_arr[end]==c; - } - - //main method to test the code - public static void main(String args[]){ - Scanner sc=new Scanner(System.in); - - System.out.println("Enter the size of Queue"); - int length=sc.nextInt(); - CircularQueue ob=new CircularQueue(length); - - char ch='y';//default set to yes, can be changed to No, doesnot matter - do{ - System.out.println("1-Add an element to the Queue at the end\n2-Check wether the Queue is empty\n3-Return/Delete an Element from the Front\n4-Check if Queue is Full"); - System.out.println("Enter the option"); - int opt=sc.nextInt();//option choosen by the user - switch(opt){ - case 1: - System.out.println("Enter the element to be inserted to Queue"); - int elem=sc.nextInt(); - ob.pushEnd(elem); - break; - case 2: - if(ob.isEmpty()){ - System.out.println("Queue is Empty"); - } - else{ - System.out.println("Queue is Not Empty"); - } - break; - case 3: - System.out.println("Enter the deleted/returned is :"+ob.popFront()); - break; - case 4: - if(ob.isFull()){ - System.out.println("Queue is Full"); - } - else{ - System.out.println("Queue is not Full"); - } - default: - System.out.println("Wrong input"); - } - System.out.println("Do you want to continue for more inputs?(y/n)");//Any random character will be considered as No - ch=sc.next().charAt(0); - ch=Character.toLowerCase(ch); - - }while(ch=='y'); - - /*created Date Monday October 7 2019 1800 hrs - last modified Saturday October 12 2019 1913 hrs - - Further Edits:Change options according to the methods - Check -1 or 0 cases of queue - Run and debug the codes - Add better comments - -*/ - - - } - -} diff --git a/Circular_Dobely_Link_List/Circular_Dobely_Link_List_Output.txt b/Circular_Dobely_Link_List/Circular_Dobely_Link_List_Output.txt deleted file mode 100644 index 4bdca486..00000000 --- a/Circular_Dobely_Link_List/Circular_Dobely_Link_List_Output.txt +++ /dev/null @@ -1,86 +0,0 @@ -1 for insert value at front: -2 for insert value at rear: -3 for insert value according to order: -4 for insert value after specific value: -5 for delete from front -6 for delete from end -7 for delete specific value -8 for display -9 for Exit -1 -Enter the value you want to insert: -12 -Enter which type of the operation you want to apply: -1 -Enter the value you want to insert: -14 -Enter which type of the operation you want to apply: -2 -Enter the value you want to insert: -54 -Enter which type of the operation you want to apply: -2 -Enter the value you want to insert: -32 -Enter which type of the operation you want to apply: -3 -Enter the value you want to insert: -5 -Enter which type of the operation you want to apply: -4 -Enter the value you want to insert: -54 -Enter after which value you want to insert: -32 -Enter which type of the operation you want to apply: -8 -The Numbers in list is..5 14 12 54 32 54 -Enter which type of the operation you want to apply: -5 -5 is removed -Enter which type of the operation you want to apply: -8 -The Numbers in list is..14 12 54 32 54 -Enter which type of the operation you want to apply: -6 -54 is removed -Enter which type of the operation you want to apply: -8 -The Numbers in list is..14 12 54 32 -Enter which type of the operation you want to apply: -7 -Enter value you want to be deleted -12 -12 is removed -Enter which type of the operation you want to apply: -8 -The Numbers in list is..14 54 32 -Enter which type of the operation you want to apply: -6 -32 is removed -Enter which type of the operation you want to apply: -7 -Enter value you want to be deleted -14 -14 is removed -Enter which type of the operation you want to apply: -8 -The Numbers in list is..54 -Enter which type of the operation you want to apply: -2 -Enter the value you want to insert: -10 -Enter which type of the operation you want to apply: -6 -10 is removed -Enter which type of the operation you want to apply: -6 -54 is removed -Enter which type of the operation you want to apply: -6 -The list is Empty -Enter which type of the operation you want to apply: -9 - -Process returned 0 (0x0) execution time : 172.692 s -Press any key to continue. diff --git a/Circular_Dobely_Link_List/Circulr_Dobely_Link_List.c b/Circular_Dobely_Link_List/Circulr_Dobely_Link_List.c deleted file mode 100644 index 718f06d5..00000000 --- a/Circular_Dobely_Link_List/Circulr_Dobely_Link_List.c +++ /dev/null @@ -1,299 +0,0 @@ -#include -#include - -struct Node{ - int value; - struct Node* lptr; - struct Node* rptr; -}; - -void insert_front(struct Node**L,struct Node**R,int val){ - struct Node* newNode; - newNode = (struct Node*)malloc(sizeof(struct Node)); - - newNode->value = val; - - if(*L==NULL){ - newNode->lptr= newNode; - newNode->rptr= newNode; - *L=*R=newNode; - return; - } - newNode->rptr = *L; - newNode->lptr = *R; - (*L)->lptr = newNode; - *L = newNode; - (*R)->rptr = *L; // make circular List -} - -void insert_rear(struct Node**L,struct Node**R,int val){ - struct Node* newNode; - newNode = (struct Node*)malloc(sizeof(struct Node)); - - newNode->value = val; - - if(*L==NULL){ - newNode->lptr= newNode; - newNode->rptr= newNode; - *L=*R=newNode; - return; - } - newNode->lptr = *R; - newNode->rptr = *L; - (*R)->rptr = newNode; - *R = newNode; - (*L)->lptr = *R; //make Circular List -} - -void insert_order(struct Node**L,struct Node**R,int val){ - struct Node* newNode; - struct Node* temp = *L; - newNode = (struct Node*)malloc(sizeof(struct Node)); - - newNode->value = val; - - if(*L==NULL){ - newNode->lptr= newNode; - newNode->rptr= newNode; - *L=*R=newNode; - return; - } - - if(val <= (*L)->value){ - newNode->rptr = *L; - newNode->lptr = *R; - (*L)->lptr = newNode; - *L = newNode; - (*R)->rptr = *L; - } - else if(val >= (*R)->value){ - newNode->lptr = *R; - newNode->rptr = *L; - (*R)->rptr = newNode; - *R = newNode; - (*L)->lptr = *R; - } - else{ - while(temp->value <= val) - temp = temp->rptr; - - newNode->lptr = temp->lptr; - newNode->rptr = temp; - temp->lptr->rptr = newNode; - temp->lptr = newNode; - } -} - -void insert_specs(struct Node**L,struct Node**R,int val){ - int sval,n; - struct Node* newNode; - struct Node* temp = *L; - newNode = (struct Node*)malloc(sizeof(struct Node)); - - newNode->value = val; - //here our list is not empty because user give us value which we have to put after some value, - //so the list is not empty and we dont have to write condition for null list - - do{ - printf("Enter after which value you want to insert:\n"); - scanf("%d",&sval); - n=1; //initialize n here. - temp = *L; //initialize temp also because if one time value not found then temp comes to head part again for new loop - while(temp->value != sval){ - temp = temp->rptr; - - if(temp== NULL){ //this condition is special because written in while loop - printf("your given value is not found\n"); - n=0; - break; - } - } - }while(n==0); - - newNode->lptr = temp; - newNode->rptr = temp->rptr; - if(temp != *R) temp->rptr->lptr = newNode; // write this always above the below sentences. - temp->rptr = newNode; - - if(temp == *R){ //upgradation of rear and front value - *R = newNode; - (*L)->lptr = *R; - } -} - - -void del_front(struct Node** Head,struct Node ** Rear){ - struct Node * delete; - - if(*Head == NULL){ - printf("The list is Empty\n"); - return; - } - if((*Head)->rptr == NULL && (*Head)->lptr == NULL){ - printf("%d is removed\n",(*Head)->value); - free(*Head); - *Head = *Rear = NULL; - return; - } - delete = *Head; - *Head = (*Head)->rptr; - (*Head)->lptr = *Rear; - (*Rear)->rptr = *Head; - printf("%d is removed\n",delete->value); - free(delete); -} - -void del_end(struct Node** Head,struct Node** Rear){ - struct Node * delete; - - if(*Head == NULL){ - printf("The list is Empty\n"); - return; - } - if(*Head == *Rear){ - printf("%d is removed\n",(*Head)->value); - free(*Head); - *Head = *Rear = NULL; - return; - } - - delete = *Rear; - (*Rear) = (*Rear)->lptr; - (*Rear)->rptr = *Head; - (*Head)->lptr = *Rear; - printf("%d is removed\n",delete->value); - free(delete); -} - -void del_specific(struct Node** Head,struct Node** Rear,int val){ - struct Node * temp; - temp = *Head; - - if(*Head == NULL){ - printf("The list is Empty\n"); - return; - } - - if( val == (*Head)->value){ - if(*Head == *Rear){ //condition for only Node - printf("%d is removed\n",(*Head)->value); - free(*Head); - *Head = *Rear = NULL; - } - else{ - temp = *Head; - *Head = (*Head)->rptr; - (*Head)->lptr = *Rear; - (*Rear)->rptr = *Head; - printf("%d is removed\n",temp->value); - free(temp); - } - } - else if(val == (*Rear)->value){ - - temp = *Rear; - (*Rear) = (*Rear)->lptr; - (*Rear)->rptr = *Head; - (*Head)->lptr = *Rear; - printf("%d is removed\n",temp->value); - free(temp); - } - else{ - while (temp != NULL && temp->value != val) - temp = temp->rptr; - - if(temp == NULL){ - printf("Value is not found\n"); - return; - } - //temp points to the node to be deleted - - temp->lptr->rptr = temp->rptr; - temp->rptr->lptr = temp->lptr; - printf("%d is removed\n",temp->value); - free(temp); - } -} - -void display(struct Node * H){ - struct Node *temp; - temp = H; - - if(temp == NULL){ - printf("List is empty\n"); - return; - } - - printf("The Numbers in list is.."); - do{ - printf("%d ",temp->value); - temp = temp->rptr; - }while(temp!= H); - printf("\n"); - -} - - -int main(){ - struct Node* Head; - struct Node* Rear; - Head = Rear = NULL; - int val,n,sval; - - printf("1 for insert value at front:\n"); - printf("2 for insert value at rear:\n"); - printf("3 for insert value according to order:\n"); - printf("4 for insert value after specific value:\n"); - printf("5 for delete from front\n"); - printf("6 for delete from end\n"); - printf("7 for delete specific value\n"); - printf("8 for display\n"); - printf("9 for Exit\n"); - scanf("%d",&n); - - while(n !=9){ - - switch(n){ - case 1: - printf("Enter the value you want to insert:\n"); - scanf("%d",&val); - insert_front(&Head,&Rear,val); - break; - case 2: - printf("Enter the value you want to insert:\n"); - scanf("%d",&val); - insert_rear(&Head,&Rear,val); - break; - case 3: - printf("Enter the value you want to insert:\n"); - scanf("%d",&val); - insert_order(&Head,&Rear,val); - break; - case 4: - printf("Enter the value you want to insert:\n"); - scanf("%d",&val); - insert_specs(&Head,&Rear,val); - break; - case 5: - del_front(&Head,&Rear); - break; - case 6: - del_end(&Head,&Rear); - break; - case 7: - printf("Enter value you want to be deleted\n"); - scanf("%d",&val); - del_specific(&Head,&Rear,val); - break; - case 8: - display(Head); - break; - default: - printf("Enter specific value:\n"); - } - - printf("Enter which type of the operation you want to apply:\n"); - scanf("%d",&n); - } - return 0; -} diff --git a/Circular_Link_List/Circular_Link_List.c b/Circular_Link_List/Circular_Link_List.c deleted file mode 100644 index b32a930f..00000000 --- a/Circular_Link_List/Circular_Link_List.c +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include - -struct node{ - int value; - struct node *ptr; -}; - -struct node* insertOrder(struct node *head,int val){ - struct node* newNode,*temp; - temp = head; - newNode = (struct node*)malloc(sizeof(struct node)); - - newNode->value = val; - - if(head == NULL){ - newNode->ptr = newNode; - head = newNode; - } - else if(val <= head->value){ - newNode->ptr = head; - - while(temp->ptr != head) - temp = temp->ptr; - - head = newNode; // initialize head part here always - temp->ptr = head; - } - else{ - while(temp->ptr != head && val > temp->ptr->value) - temp = temp->ptr; - - newNode->ptr = temp->ptr; - temp->ptr = newNode; - } - return head; -} - - -struct node* deleteVal(struct node* head,int val){ - struct node* temp,*nodeDeleted; - temp = head; - if(head == NULL){ - printf("List is empty\n"); - } - else if(head->value == val){ - while(temp->ptr != head) { - temp = temp->ptr; - } - temp->ptr = head->ptr; - free(head); - head = temp->ptr; - } - else{ - temp = head; - while (temp->ptr != head && val != temp->ptr->value) { - temp = temp->ptr; - } - - if(temp->ptr == head) - printf("Given value is not Found\n"); - else{ - nodeDeleted = temp->ptr; - temp->ptr = temp->ptr->ptr; - free(nodeDeleted); - } - } - return head; -} - -void display(struct node* head){ - struct node*temp = head; - if(head == NULL) - printf("The list is Empty\n"); - else{ - do{ - printf("%d ",temp->value); - temp = temp->ptr; - } while(temp != head); - printf("\n"); - } -} - -void main(){ - struct node * head; - head= NULL; - int n,val; - - printf("Enter 1 for insert in order\n"); - printf("Enter 2 for delete value\n"); - printf("Enter 3 for display\n"); - printf("Enter 4 for EXIT\n"); - scanf("%d",&n); - - while(n!= 4){ - switch(n){ - case 1: - printf("Enter value you want to inserted\n"); - scanf("%d",&val); - head = insertOrder(head,val); - break; - case 2: - printf("Enter value you want to delete\n"); - scanf("%d",&val); - head = deleteVal(head,val); - break; - case 3: - display(head); - break; - default: - printf("Enter proper value\n"); - } - printf("Enter 1/2/3/4\n"); - scanf("%d",&n); - } - -} diff --git a/Circular_Link_List/Circular_Link_List_Output.txt b/Circular_Link_List/Circular_Link_List_Output.txt deleted file mode 100644 index 403c6844..00000000 --- a/Circular_Link_List/Circular_Link_List_Output.txt +++ /dev/null @@ -1,46 +0,0 @@ -Enter 1 for insert in order -Enter 2 for delete value -Enter 3 for display -Enter 4 for EXIT -1 -Enter value you want to inserted -12 -Enter 1/2/3/4 -1 -Enter value you want to inserted -54 -Enter 1/2/3/4 -1 -Enter value you want to inserted -87 -Enter 1/2/3/4 -3 -12 54 87 -Enter 1/2/3/4 -2 -Enter value you want to delete -54 -Enter 1/2/3/4 -3 -12 87 -Enter 1/2/3/4 -2 -Enter value you want to delete -12 -Enter 1/2/3/4 -3 -87 -Enter 1/2/3/4 -2 -Enter value you want to delete -87 -Enter 1/2/3/4 -2 -Enter value you want to delete -32 -Given value is not Found -Enter 1/2/3/4 -4 - -Process returned 4 (0x4) execution time : 80.470 s -Press any key to continue. \ No newline at end of file diff --git a/Circular_Link_List/josephus_problem.c b/Circular_Link_List/josephus_problem.c deleted file mode 100644 index 3188e4a3..00000000 --- a/Circular_Link_List/josephus_problem.c +++ /dev/null @@ -1,243 +0,0 @@ -#include -#include - -// Node of the circular linked list. -typedef struct Node -{ - int data; - struct Node *next; -} Node; - -// Handle of the list. -// Head points to the first node in the list. -// Tail points to the last node in the list. -typedef struct List -{ - Node *head; - Node *tail; - int length; -} List; - -// Initializes a cirucular linked list. -List* initialize_list(); - -// Creates a node and stores the data in it. -Node* create_node(int data); - -// Inserts data at the head of the list. -void insert_head(List* cll, int data); - -// Deletes the node at the head position. No operation if list is empty. -void delete_head(List* cll); - -// Swaps the first(Head) and last(Tail) element. -void swap_first_and_last(List* cll); - -// Prints the data present in the safe node according to the josephus problem. -int josephus(List* cll, int k); - -// Prints the entire list. Prints "EMPTY" if the list is empty. -void display(List* cll); - -// Deallocates resources held by the list. -void destroy_list(List* cll); - - -int main() -{ - List* cll = initialize_list(); - int ele, choice, pos, k; - do - { - scanf("%d",&choice); - switch(choice) - { - // Insert at Head. - case 1: - scanf("%d",&ele); - insert_head(cll,ele); - break; - - // Delete at Head. - case 2: - delete_head(cll); - break; - - // Josephus problem. - case 3: - scanf("%d",&k); - ele = josephus(cll,k); - printf("%d\n",ele); - break; - - // Swap first and last element. - case 4: - swap_first_and_last(cll); - break; - - // Print entire list. - case 5: - display(cll); - break; - } - } - while (choice != 0); - - destroy_list(cll); - return 0; -} - -List* initialize_list() -{ - List *list =(List*)malloc(sizeof(List)); - list->head=NULL; - list->tail=NULL; - list->length=0; - return list; -} - -Node* create_node(int data) -{ - Node *temp=(Node*)malloc(sizeof(Node)); - temp->data=data; - temp->next=NULL; - return temp; -} - -void insert_head(List* cll, int data) -{ - - Node *temp=create_node(data); - if(cll->head==NULL) // if(length==0) - { - temp->next=temp; - cll->head=temp; - cll->tail=temp; - } - else - { - temp->next=cll->head; - cll->tail->next=temp; - cll->head=temp; - }// TODO - cll->length+=1; - return; -} - -void delete_head(List* cll) -{ - if(cll->head==NULL) - { - return; - } - else if(cll->head->next==cll->head) - { - free(cll->head); - cll->head=NULL; - cll->tail=NULL; - cll->length-=1; - return; - } - else - { - Node *temp=cll->head; - cll->head=temp->next; - free(temp); - cll->tail->next=cll->head; - cll->length-=1; - return; - } -} - -void swap_first_and_last(List *cll) -{ - if(cll->length==0) - { - return; - } - else if(cll->length==1) - { - return; - } - else - { - int temp1; - temp1=cll->head->data; - cll->head->data=cll->tail->data; - cll->tail->data=temp1; - } -} - -int josephus(List *cll, int k) -{ - if(cll->length==0 || cll->length==1) - { - return; - } - else if(cll->length==2) - { - if(k==0) - { - free(cll->tail); - cll->tail=cll->head; - - } - else - { - free(cll->head); - cll->head=cll->tail; - } - cll->length-=1; - return cll->head->data; - } - else - { - Node *temp=cll->head; - for(int i=0;inext; - } - Node *kill; - while(cll->length>1) - { - kill=temp->next; - temp->next=kill->next; - temp=kill->next; - free(kill); - cll->length-=1; - } - cll->head=temp; - cll->tail=temp; - return temp->data; - } -} - -void display(List* cll) -{ - Node *temp=cll->head; - if(cll->head==NULL) - { - printf("EMPTY"); - } - else - { - while(temp->next!=cll->head) - { - printf("%d ",temp->data); - temp=temp->next; - } - printf("%d ",temp->data); - }printf("\n"); -} - -void destroy_list(List* cll) -{ - Node *temp; - while(cll->length!=0) - { - temp=cll->head; - cll->head=temp->next; - free(temp); - cll->length-=1; - } -} diff --git a/Circular_Queue/Circular Queue b/Circular_Queue/Circular Queue deleted file mode 100644 index 7d3b6772..00000000 --- a/Circular_Queue/Circular Queue +++ /dev/null @@ -1,98 +0,0 @@ -Implementation using C++ programming - -#include -#define SIZE 5 /* Size of Circular Queue */ - -using namespace std; - -class Queue { -private: - int items[SIZE], front, rear; - -public: - Queue(){ - front = -1; - rear = -1; - } - - bool isFull(){ - if(front == 0 && rear == SIZE - 1){ - return true; - } - if(front == rear + 1) { - return true; - } - return false; - } - - bool isEmpty(){ - if(front == -1) return true; - else return false; - } - - void enQueue(int element){ - if(isFull()){ - cout << "Queue is full"; - } else { - if(front == -1) front = 0; - rear = (rear + 1) % SIZE; - items[rear] = element; - cout << endl << "Inserted " << element << endl; - } - } - - int deQueue(){ - int element; - if(isEmpty()){ - cout << "Queue is empty" << endl; - return(-1); - } else { - element = items[front]; - if(front == rear){ - front = -1; - rear = -1; - } /* Q has only one element, so we reset the queue after deleting it. */ - else { - front=(front+1) % SIZE; - } - return(element); - } - } - - void display() - { - /* Function to display status of Circular Queue */ - int i; - if(isEmpty()) { - cout << endl << "Empty Queue" << endl; - } - else - { - cout << "Front -> " << front; - cout << endl << "Items -> "; - for(i=front; i!=rear;i=(i+1)%SIZE) - cout << items[i]; - cout << items[i]; - cout << endl << "Rear -> " << rear; - } - } - -}; - - -int main() -{ - Queue q; - - - - - q.enQueue(1); - q.enQueue(2); - q.enQueue(3); - q.enQueue(4); - q.enQueue(5); - q.enQueue(6); - q.deQueue(); - q.deQueue(); -} diff --git a/Circular_Queue/CircularQueue.py b/Circular_Queue/CircularQueue.py deleted file mode 100644 index a55bc0c4..00000000 --- a/Circular_Queue/CircularQueue.py +++ /dev/null @@ -1,62 +0,0 @@ -class CircularQueue(object): - def __init__(self, size): - """ - Initializing CircularQueue - """ - self.size = size - self._front = -1 - self._rear = -1 - self.queue = [None] * size - - - def front(self): - """ - Return the value at the front of the queue - """ - return self.queue[self._front] - - - def rear(self): - """ - Return the value at the rear of the queue - """ - return self.queue[self._rear] - - - def enqueue(self, value): - """ - Insert value into the rear of the circular queue - """ - if (self._rear == self.size - 1 and self._front == 0) or (self._rear == self._front-1): - # Queue is full - raise OverflowError("CircularQueue is full") - elif (self._rear == -1): - # Setting up for first item - self._rear = 0 - self._front = 0 - else: - # Calculating rear index after insert - self._rear = (self._rear + 1) % self.size - - self.queue[self._rear] = value - - - def dequeue(self): - """ - Remove and return the value at the front of the circular queue - """ - if(self._front==-1): - # Queue is empty - raise IndexError("CircularQueue is empty") - elif(self._front == self._rear): - # Remove the last remaning value and indicate the queue empty - value = self.queue[self._front] - self._front = -1 - self._rear = -1 - return value - else: - # Return the value at the front of the queue - value = self.queue[self._front] - self.queue[self._front] = None - self._front = (self._front + 1 ) % self.size - return value \ No newline at end of file diff --git a/Circular_Queue/Circular_Queue.c b/Circular_Queue/Circular_Queue.c deleted file mode 100644 index bfe0c923..00000000 --- a/Circular_Queue/Circular_Queue.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#define MAXSIZE 5 -int front=-1,rear=-1,q[MAXSIZE]; -void insert(int a){ - if(front==(rear+1)%MAXSIZE) printf("Error!!\nQueue is full!!!\n"); - else{ - if(front==-1) front=0; - rear =(rear+1)%MAXSIZE; - q[rear]=a; - } -} - -void delete(){ - if(front==rear){ - printf("Error!! \n Underflow condition\n Queue is empty\n"); - } - else{ - q[front]=0; - front=(front+1)%MAXSIZE; - printf("element successfully delete\n"); - } -} - -void display(){ - int i=0; - for(i=0;i const data = [5,6,1,4,5,7,8,2,4,6,3,2,6,6,3,5,5,2,10]; -> counter(data, 5); -Output: -<- 4 -*/ \ No newline at end of file diff --git a/Counting_Sort_C/countingSort.c b/Counting_Sort_C/countingSort.c deleted file mode 100644 index 72009223..00000000 --- a/Counting_Sort_C/countingSort.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - input: a unsorted array - output: a sorted array using Counting Sort algorithm. -*/ - -#include -#include - -#define MAX 100 - -void countingSort(int *vet,int *org, int tam){ - int i, j, k; - int baldes[MAX]; - - //Cria um vetor zerado com todos os indices de dados possíveis - for(i = 0 ; i < MAX ; i++) - baldes[i] = 0; - - //Marca as ocorrência dos dados a serem ordenados no vetor dos indices - for(i = 0 ; i< tam ; i++) - baldes[vet[i]]++; - - //Faz a distribuição de quantidade ao longo de todo o vetor. - for(i = 1 ; i < MAX ; i++){ - baldes[i] = baldes[i] + baldes[i-1]; - } - - //Preenche o vetor de saída com as ocorrência presentes no vetor de indice. - for(i = (tam-1) ; i >=0 ; i--){ - org[baldes[vet[i]]] = vet[i]; - baldes[vet[i]]--; - } -} - -int main(){ - int *vet, *org; - int i, tam; - - printf("Entre com o tamanho do vetor: "); - scanf("%d", &tam); - - - vet = (int*)malloc(tam*sizeof(int)); - org = (int*)malloc(tam*sizeof(int)); - - printf("Entre com os valores dos elementos\n"); - for(i = 0 ; i < tam ; i++){ - printf("Elemento %d: ",i+1); - scanf("%d", &vet[i]); - } - - printf("Seu vetor desordenado\n"); - for(i = 0 ; i < tam ; i++){ - printf("%d\t", vet[i]); - } - - countingSort(vet, org,tam); - - printf("\nSeu vetor Ordenado\n"); - for(i = 1 ; i < tam+1 ; i++){ - printf("%d\t", org[i]); - } - return 0; -} \ No newline at end of file diff --git a/DFS_FILE.pdf b/DFS_FILE.pdf deleted file mode 100644 index 6dba43382369a381d0373fb041152f9e8ec81b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549694 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

Qx}Io@UFec}<1dc6Pen)@CbZW~)ExHm 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 diff --git a/Dequeue/deque.cpp b/Dequeue/deque.cpp deleted file mode 100644 index d4b4466f..00000000 --- a/Dequeue/deque.cpp +++ /dev/null @@ -1,191 +0,0 @@ -# include -# define MAX 5 -int deque_arr[10]; -int left = -1; -int right = -1; - -/*Begin of insert_right*/ -void insert_right() -{ - int added_item; - if((left == 0 && right == MAX-1) || (left == right+1)) - { cout<<"Queue Overflow\n"; - return;} - if (left == -1) /* if queue is initially empty */ - { left = 0; - right = 0;} - else - if(right == MAX-1) /*right is at last position of queue */ - right = 0; - else - right = right+1; - cout<<"Input the element for adding in queue : "; - cin>>added_item; - deque_arr[right] = added_item ; -} -/*End of insert_right*/ - -/*Begin of insert_left*/ -void insert_left() -{ int added_item; - if((left == 0 && right == MAX-1) || (left == right+1)) - { cout<<"Queue Overflow\n"; - return; } - if (left == -1)/*If queue is initially empty*/ - { left = 0; - right = 0; } - else - if(left== 0) - left=MAX-1; - else - left=left-1; - cout<<"Input the element for adding in queue : "; - cin>>added_item; - deque_arr[left] = added_item ; - } -/*End of insert_left*/ - -/*Begin of delete_left*/ -void delete_left() -{ if (left == -1) - { cout<<"Queue Underflow\n"; - return ; } - cout<<"Element deleted from queue is : "<>choice; - - switch(choice) - { case 1: - insert_right(); - break; - case 2: - delete_left(); - break; - case 3: - delete_right(); - break; - case 4: - display_queue(); - break; - case 5: - break; - default: - cout<<"Wrong choice\n"; - } - }while(choice!=5); -} -/*End of input_que*/ - -/*Begin of output_que*/ -void output_que() -{ int choice; - do - { cout<<"1.Insert at right\n"; - cout<<"2.Insert at left\n"; - cout<<"3.Delete from left\n"; - cout<<"4.Display\n"; - cout<<"5.Quit\n"; - cout<<"Enter your choice : "; - cin>>choice; - switch(choice) - { - case 1: - insert_right(); - break; - case 2: - insert_left(); - break; - case 3: - delete_left(); - break; - case 4: - display_queue(); - break; - case 5: - break; - default: - cout<<"Wrong choice\n"; - } - }while(choice!=5); -} -/*End of output_que*/ - -/*Begin of main*/ -main() -{ int choice; - cout<<"1.Input restricted dequeue\n"; - cout<<"2.Output restricted dequeue\n"; - cout<<"Enter your choice : "; - cin>>&choice); - switch(choice) - { - case 1 : - input_que(); - break; - case 2: - output_que(); - break; - default: - cout<<"Wrong choice\n"; - } -} -/*End of main*/ diff --git a/Doble_Link_List/Doble_Link_List.c b/Doble_Link_List/Doble_Link_List.c deleted file mode 100644 index 508825eb..00000000 --- a/Doble_Link_List/Doble_Link_List.c +++ /dev/null @@ -1,176 +0,0 @@ -#include -#include - -struct node{ - int value; - struct node *lptr,*rptr; -}; - -void insert(struct node **LH,struct node **RH,int val){ - struct node *NewNode,*temp; - temp = *LH; - NewNode = (struct node*)malloc(sizeof(struct node)); - NewNode->value = val; - if(*LH == NULL && *RH == NULL){ - (*LH) = (*RH) = NewNode; - NewNode->lptr = NewNode->rptr =NULL; - }else{ - printf("1) insert at first\n2) insert at last\n3) insert at order\nWhere u want to insert :"); - int n; - scanf("%d",&n); - if(n==1){ - // insert at front - NewNode->rptr = *LH; - NewNode->lptr = NULL; - (*LH)->lptr = NewNode; - *LH = NewNode; - }else if(n==2){ - NewNode->rptr = NULL; - NewNode->lptr = *RH; - (*RH)->rptr = NewNode; - *RH = NewNode; - }else if(n==3){ - if(temp->lptr == NULL){ - if(temp->value >= val){ - NewNode->rptr = *LH; - NewNode->lptr = NULL; - (*LH)->lptr = NewNode; - *LH = NewNode; - } - else{ - NewNode->rptr = NULL; - NewNode->lptr = *RH; - (*RH)->rptr = NewNode; - *RH = NewNode; - } - return; - } - if(temp->value >= val){ - NewNode->rptr = *LH; - NewNode->lptr = NULL; - (*LH)->lptr = NewNode; - *LH = NewNode; - return; - } - - while(temp->rptr->value <= val) - temp = temp->rptr; - if(temp->rptr == *RH){ - NewNode->rptr = NULL; - NewNode->lptr = *RH; - (*RH)->rptr = NewNode; - *RH = NewNode; - }else{ - NewNode->lptr = temp; - NewNode->rptr = temp->rptr; - temp->rptr->lptr = NewNode; - temp->rptr = NewNode; - } - } - else printf("\nsomething wrong"); - } -} -void Display(struct node **LH,struct node ** RH){ - struct node *temp; - temp = *LH; - while(temp != NULL){ - printf(" %d ",temp->value); - temp = temp->rptr; - } - printf("\n"); -} - -void delete_Link(struct node **LH,struct node **RH){ - struct node *NodetoBeDeleted,*temp; - int n, val; - temp = *LH; - if(*LH == NULL ){ - printf("\nsorry Link List is Empty\n"); - return; - } - if(temp->lptr == NULL && temp->rptr == NULL){ - NodetoBeDeleted = temp; - free(NodetoBeDeleted); - *LH= *RH= NULL; - }else{ - printf("1) Delete first Link\n2) Delete Last link\n3) Delete specific value \nwhich value u want to Delete"); - scanf("%d",&n); - if(n==3){ - printf("Enter value :"); - scanf("%d",&val); - } - if(n==1){ - NodetoBeDeleted = *LH; - (*LH) = (*LH)->rptr; - free(NodetoBeDeleted); - return; - }else if(n==2){ - NodetoBeDeleted = *RH; - (*RH)->lptr->rptr = NULL; - *RH = (*RH)->lptr; - free(NodetoBeDeleted); - return; - - }else if(n==3){ - if((*RH)->value == val){ - NodetoBeDeleted = *RH; - - *RH = (*RH)->lptr; - free(NodetoBeDeleted); - return; - } - if((*LH)->value == val){ - NodetoBeDeleted = *LH; - *LH = (*LH)->rptr; - free(NodetoBeDeleted); - return; - }else{ - - - while(temp->rptr->value != val) - temp = temp->rptr; - - NodetoBeDeleted = temp->rptr; - temp->rptr = temp->rptr->rptr; - temp->rptr->lptr = temp; - free(NodetoBeDeleted); - } - }else{ - printf("sorry something wrong\n"); - } - - } -} - -int main(){ - struct node *LH,*RH; - LH = RH = NULL; - int c,n; - printf("1) Insert\n2) Delete\n3) Display\n4) Exit"); - while(c!=4){ - printf("\nEnter your choice :"); - scanf("%d",&c); - switch(c){ - case 1: - printf("Enter value :"); - scanf("%d",&n); - insert(&LH,&RH,n); - break; - case 2: - delete_Link(&LH,&RH); - break; - case 3: - Display(&LH,&RH); - break; - case 4: - exit(0); - break; - default: - printf("Please Enter Between 1 to 4"); - break; - - } - } - - return 0; -} diff --git a/Doble_Link_List/Doble_Link_List_Output.txt b/Doble_Link_List/Doble_Link_List_Output.txt deleted file mode 100644 index 661295a8..00000000 --- a/Doble_Link_List/Doble_Link_List_Output.txt +++ /dev/null @@ -1,89 +0,0 @@ -1) Insert -2) Delete -3) Display -4) Exit -Enter your choice :1 -Enter value :12 - -Enter your choice :1 -Enter value :37 -1) insert at first -2) insert at last -3) insert at order -Where u want to insert :1 - -Enter your choice :1 -Enter value :19 -1) insert at first -2) insert at last -3) insert at order -Where u want to insert :3 - -Enter your choice :3 - 19 37 12 - -Enter your choice :1 -Enter value :57 -1) insert at first -2) insert at last -3) insert at order -Where u want to insert :2 - -Enter your choice :1 -Enter value :47 -1) insert at first -2) insert at last -3) insert at order -Where u want to insert :1 - -Enter your choice :3 - 47 19 37 12 57 - -Enter your choice :2 -1) Delete first Link -2) Delete Last link -3) Delete specific value -which value u want to Delete1 - -Enter your choice :3 - 19 37 12 57 - -Enter your choice :2 -1) Delete first Link -2) Delete Last link -3) Delete specific value -which value u want to Delete2 - -Enter your choice :2 -1) Delete first Link -2) Delete Last link -3) Delete specific value -which value u want to Delete3 -Enter value :37 - -Enter your choice :3 - 19 12 - -Enter your choice :2 -1) Delete first Link -2) Delete Last link -3) Delete specific value -which value u want to Delete2 - -Enter your choice :3 - 19 - -Enter your choice :2 -1) Delete first Link -2) Delete Last link -3) Delete specific value -which value u want to Delete1 - -Enter your choice :2 - -sorry Link List is Empty - -Enter your choice :4 - -Process returned 0 (0x0) execution time : 302.976 s -Press any key to continue. \ No newline at end of file diff --git a/FizzBuzz_Javascript/fizzbuzz.js b/FizzBuzz_Javascript/fizzbuzz.js deleted file mode 100644 index 9f5c9629..00000000 --- a/FizzBuzz_Javascript/fizzbuzz.js +++ /dev/null @@ -1,13 +0,0 @@ -function fizzBuzz(){ - for(var i=1;i<=100;i++){ - if(i%5 === 0 && i%3 === 0){ - print('FizzBuzz'); - } else if(i%3 === 0){ - print('Fizz'); - } else if(i%5 === 0){ - print('Buzz'); - } else { - print(i); - } - } -} diff --git a/FizzBuzz_Javascript/readme.MD b/FizzBuzz_Javascript/readme.MD deleted file mode 100644 index 788b05b5..00000000 --- a/FizzBuzz_Javascript/readme.MD +++ /dev/null @@ -1,3 +0,0 @@ -## Fizz Buzz in Javascript - -Basic implemtation of Fizz Buzz with Javascript using if statements \ No newline at end of file diff --git a/FizzBuzz_Python/fizzbuzz.python b/FizzBuzz_Python/fizzbuzz.python deleted file mode 100644 index 2919ba15..00000000 --- a/FizzBuzz_Python/fizzbuzz.python +++ /dev/null @@ -1,9 +0,0 @@ -for i in range(1, 101): - line = '' - if i % 3 == 0: - line += "Fizz" - if i % 5 == 0: - line += "Buzz" - if not line: - line += str(i) - print(line) \ No newline at end of file diff --git a/FizzBuzz_Python/readme.MD b/FizzBuzz_Python/readme.MD deleted file mode 100644 index 03368885..00000000 --- a/FizzBuzz_Python/readme.MD +++ /dev/null @@ -1,3 +0,0 @@ -## Fizz Buzz in Python - -Basic implemtation of Fizz Buzz with Python using if statements \ No newline at end of file diff --git a/FizzBuzz_Swift/FizzBuzz.swift b/FizzBuzz_Swift/FizzBuzz.swift deleted file mode 100644 index 9a9667ff..00000000 --- a/FizzBuzz_Swift/FizzBuzz.swift +++ /dev/null @@ -1,19 +0,0 @@ -func fizzBuzz(_ numberOfTurns: Int) { - for i in 1...numberOfTurns { - var result = "" - - if i % 3 == 0 { - result += "Fizz" - } - - if i % 5 == 0 { - result += (result.isEmpty ? "" : " ") + "Buzz" - } - - if result.isEmpty { - result += "\(i)" - } - - print(result) - } -} \ No newline at end of file diff --git a/FizzBuzz_Swift/readme.MD b/FizzBuzz_Swift/readme.MD deleted file mode 100644 index 4fd297e8..00000000 --- a/FizzBuzz_Swift/readme.MD +++ /dev/null @@ -1,3 +0,0 @@ -## Fizz Buzz in Swift - -Basic implemtation of Fizz Buzz with Swift using if statements \ No newline at end of file diff --git a/Graph_in_c/BFS.c b/Graph_in_c/BFS.c deleted file mode 100644 index 3bba7a4b..00000000 --- a/Graph_in_c/BFS.c +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef Queue_h -#define Queue_h -#include -struct Node -{ -int data; -struct Node *next; -}*front=NULL,*rear=NULL; -void enqueue(int x) -{ -struct Node *t; -t=(struct Node*)malloc(sizeof(struct Node)); -if(t==NULL) -printf("Queue is FUll\n"); -else -{ -t->data=x; -t->next=NULL; -if(front==NULL) -front=rear=t; -else -{ -rear->next=t; -rear=t; -} -} -} -int dequeue() -{ -int x=-1; -struct Node* t; -if(front==NULL) -printf("Queue is Empty\n"); -else -{ -x=front->data; -t=front; - -front=front->next; -free(t); -} -return x; -} -int isEmpty() -{ -return front==NULL; -} -#endif /* Queue_h */ - -#include -#include "Queue.h" -void BFS(int G[][7],int start,int n) -{ -int i=start,j; -int visited[7]={0}; -printf("%d ",i); -visited[i]=1; -enqueue(i); -while(!isEmpty()) -{ -i=dequeue(); -for(j=1;j { - - private var buckets: [HashNode?] - private var capacity: Int - private(set) var collisions = 0 - private(set) var count = 0 - public var isEmpty: Bool { return count == 0 } - - init(capacity: Int) { - buckets = [HashNode?](repeating: nil, count: capacity) - self.capacity = capacity - } - - mutating func addUpdate(key: Key, value: Value) { - let hashIndex = index(forKey: key) - let destNode = buckets[hashIndex] - - if destNode == nil { - count += 1 - buckets[hashIndex] = HashNode(key: key, value: value) - } else { - var curNode = destNode - while curNode != nil { - if curNode!.key == key { - collisions += 1 - curNode!.value = value - return - } - curNode = curNode!.nextNode - } - - count += 1 - buckets[hashIndex] = HashNode(key: key, value: value, nextNode: destNode) - } - } - - func value(forKey key: Key) -> Value? { - let hashIndex = index(forKey: key) - var node = buckets[hashIndex] - - if node == nil { - return nil - } - - while node != nil { - if node!.key == key { - return node!.value - } - node = node!.nextNode - } - - return nil - } - - mutating func remove(atKey key: Key) -> Value? { - let hashIndex = index(forKey: key) - var node = buckets[hashIndex] - - if node == nil { - return nil - } - - var prevNode: HashNode? - while node != nil { - if node!.key == key { - if prevNode == nil { - if node!.nextNode == nil { - buckets[hashIndex] = nil - } else { - buckets[hashIndex] = node!.nextNode - } - } else if node!.nextNode == nil { - prevNode!.nextNode = nil - } else { - prevNode!.nextNode = node!.nextNode - } - count -= 1 - return node!.value - } - prevNode = node - node = node!.nextNode - } - - return nil - } - - private func index(forKey key: Key) -> Int { - return abs(key.hashValue) % buckets.count - } - -} - - -class HashNode { - - var key: Key - var value: Value - var nextNode: HashNode? - - init(key: Key, value: Value, nextNode: HashNode? = nil) { - self.key = key - self.value = value - self.nextNode = nextNode - } - -} - diff --git a/HashTable/MyHashMap.py b/HashTable/MyHashMap.py deleted file mode 100644 index d79f862c..00000000 --- a/HashTable/MyHashMap.py +++ /dev/null @@ -1,51 +0,0 @@ -class MyHashMap(object): - - def __init__(self): - """ - Initialize your data structure here. - """ - self.hash_map = [None] * 1000 - - - def put(self, key, value): - """ - value will always be non-negative. - :type key: int - :type value: int - :rtype: None - """ - the_hash = hash(key) % 1000 - if not self.hash_map[the_hash]: - self.hash_map[the_hash] = [] - self.remove(key) - self.hash_map[the_hash].append((key, value)) - - - def get(self, key): - """ - Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key - :type key: int - :rtype: int - """ - the_hash = hash(key) % 1000 - - if self.hash_map[the_hash]: - for t in self.hash_map[the_hash]: - if t[0] == key: - return t[1] - return -1 - - def remove(self, key): - """ - Removes the mapping of the specified value key if this map contains a mapping for the key - :type key: int - :rtype: None - """ - the_hash = hash(key) % 1000 - to_delete = None - if self.hash_map[the_hash]: - new_cell = [] - for i in range(len(self.hash_map[the_hash])): - if not self.hash_map[the_hash][i][0] == key: - new_cell.append(self.hash_map[the_hash][i]) - self.hash_map[the_hash] = new_cell diff --git a/Infix to expression tree/infix_to_exp.cpp b/Infix to expression tree/infix_to_exp.cpp deleted file mode 100644 index 80e78dbe..00000000 --- a/Infix to expression tree/infix_to_exp.cpp +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -using namespace std; -struct node{ -char data; -struct node *right,*left; -}; -class infix -{ - string result = ""; - stack s ; - public: string decode(string exp) - { - for(int i=0;i=0)||(s<='Z' && s>='A')||(s<='z' && s>='a')) - return true; - else return false; - - } - bool isoperator(char x) - { - if(x=='+'||x=='-'||x=='/'||x=='*'||x=='^') - return true; - else return false; - } - int getweight(char m) - { - int weight =-1; - switch(m) - { - case '+': - case '-': - weight = 1; - break; - case '*': - case '/': - weight = 2; - case '^': - weight = 3; - } - return weight; - } - bool isrightassociative(char a) - { - if(a=='^')return true; - else return false; - } - bool hashigherprecedence(char a, char b) - { - int weight1 = getweight(a); - int weight2 = getweight(b); - if(weight1==weight2) - { - if(isrightassociative(a)) - return false; - else - return true; - } - return weight1 > weight2 ? true : false; - - } -node* expressiontree(string postfix) - -{ - stack s; -int size = postfix.size(); -for(int i=0;idata= postfix[i]; - temp->left = NULL; - temp->right = NULL; - s.push(temp); - - - } - else - { - node* t2 = s.top(); - s.pop(); - node* t1 = s.top(); - s.pop(); - node* temp = (node*)malloc(sizeof(node)); - if(temp==NULL) - { - cout<<"memory error"<data = postfix[i]; - temp->left = t1; - temp->right = t2; - s.push(temp); - - } - -} -return s.top(); -} -}; -int main() -{ - infix t; - node* x = t.expressiontree(t.decode("(a+n)*(c+d)")); - return 0; -} \ No newline at end of file diff --git a/Infix_To_Postfix/infix2post_2.cpp b/Infix_To_Postfix/infix2post_2.cpp deleted file mode 100644 index df36117d..00000000 --- a/Infix_To_Postfix/infix2post_2.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include "stack.cpp" -using namespace std; - -void convert(string exp){ - stack s; - string out; - - for(int i =0; i>exp; - convert(exp); - return 0; -} diff --git a/Infix_To_Postfix/infix2postfix.py b/Infix_To_Postfix/infix2postfix.py deleted file mode 100644 index 5b383605..00000000 --- a/Infix_To_Postfix/infix2postfix.py +++ /dev/null @@ -1,43 +0,0 @@ -# Python 3 program to convert infix to postfix -# This program uses Stack from pythonds -# A stack can be easily implemented using python list but for maintaining the feel of the algorithm the code here uses Stack() - -# pip install pythonds -from pythonds.basic import Stack - -# Precedence setting for the operands -def precedence(): - prec = {} - prec['*'] = 3 - prec['/'] = 3 - prec['+'] = 2 - prec['-'] = 2 - prec['('] = 1 - return prec - -def infix2postfix(exp): - prec = precedence() - operations = Stack() - postfixList = [] - tokenList = exp.split() - - for token in tokenList: - if token in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' or token in '0123456789': - postfixList.append(token) - elif token == '(': - operations.push(token) - elif token == ')': - top = operations.pop() - while top != '(': - postfixList.append(top) - top = operations.pop() - else: - while not operations.isEmpty() and prec[operations.peek()] >= prec[token]: - postfixList.append(operations.pop()) - operations.push(token) - while not operations.isEmpty(): - postfixList.append(operations.pop()) - return ''.join(postfixList) - -# Uncomment the following line to test -#print(infix2postfix("A * B + C * D")) diff --git a/Infix_To_Postfix/infix_To_Postfix.c b/Infix_To_Postfix/infix_To_Postfix.c deleted file mode 100644 index 7ced6691..00000000 --- a/Infix_To_Postfix/infix_To_Postfix.c +++ /dev/null @@ -1,86 +0,0 @@ -#include -int top=-1,top2=-1; -int MAXSIZE=100; -char s[100]; - -int isOperand(char x){ - if((x>='a'&& x<='z')||(x>='A' && x<='Z')){ - return 1; - } - else - return 0; -} - -void push(char x){ - - s[++top]=x; - -} - -char pop(){ - - return s[top--]; - -} - -int priority(char x){ - if(x=='('){ - return 0; - } - else if(x=='+' || x=='-'){ - return 1; - } - else if(x=='*' || x=='/'){ - return 2; - } -} - -int main(){ - int p=0; - char exp[MAXSIZE],*e,postfix[MAXSIZE]; - printf("Enter your infix Expression : "); - scanf("%s",exp); - e=exp; - printf(" your Postfix Expression is : "); - while(*e!='\0'){ - - if(isOperand(*e)){ - postfix[p]=*e; - printf("%c",postfix[p++]); - - } - - else if(*e=='('){ - push(*e); - } - - else if(*e==')'){ - while(s[top]!='('){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - - - } - top--; - } - - else{ - while(priority(s[top])>=priority(*e)){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - - - } - push(*e); - } - e++; - } - - while(top!=-1){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - } - printf("\n"); - return 0; -} - diff --git a/Infix_To_Postfix/infix_To_Postfix_Output.txt b/Infix_To_Postfix/infix_To_Postfix_Output.txt deleted file mode 100644 index dae74915..00000000 --- a/Infix_To_Postfix/infix_To_Postfix_Output.txt +++ /dev/null @@ -1,18 +0,0 @@ -Enter your infix Expression : a+b*(c/d)%e - your Postfix Expression is : abcd/e%*+ - -Process returned 0 (0x0) execution time : 21.678 s -Press any key to continue. - - - -****************************************************** - - -Enter your infix Expression : (10+20)*(12/3)*(7%2) - your Postfix Expression is : 1020+213/*72%* - -Process returned 0 (0x0) execution time : 53.655 s -Press any key to continue. - - diff --git a/Infix_To_Postfix/stack.cpp b/Infix_To_Postfix/stack.cpp deleted file mode 100644 index c80eef4a..00000000 --- a/Infix_To_Postfix/stack.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -using namespace std; - -class stack{ - public: - char arr[10]; - int top; - - stack(){ - top = -1; - } - - void push(char x){ - if(top<10){ - top+=1; - arr[top] = x; - } - else{ - cout<<"Stack is full\n"; - } - } - - char pop(){ - if(isEmpty()){ - cout<<"Stack is Empty\n"; - } - char a = arr[top]; - top-=1; - return a; - } - - char topel(){ - return arr[top]; - } - - bool isEmpty(){ - if(top==-1){ - return true; - } - return false; - } - - void print(){ - for(int i=0; i<=top; i++){ - cout< -int top=-1,top2=-1; -int MAXSIZE=100; -char s[100]; -int d[100]; -int isOperand(char x){ - if((x>='a'&& x<='z')||(x>='A' && x<='Z')){ - return 1; - } - else - return 0; -} - -int isnumber(int n){ - - if(n>=0 && n<=9)return 1; - else return 0; -} -void push_n(int x){ - - d[++top2]=x; - -} - -int pop_n(){ - - return d[top2--]; - -} -void push(char x){ - - s[++top]=x; - -} - -char pop(){ - - return s[top--]; - -} - -int priority(char x){ - if(x=='('){ - return 0; - } - else if(x=='+' || x=='-'){ - return 1; - } - else if(x=='*' || x=='/'){ - return 2; - } -} - -int main(){ - int p=0; - char exp[MAXSIZE],*e,postfix[MAXSIZE]; - printf("Enter your infix Expression : "); - scanf("%s",exp); - e=exp; - printf("\npostfix Expression is : "); - while(*e!='\0'){ - - if(isOperand(*e)){ - postfix[p]=*e; - printf("%c",postfix[p++]); - - } - - else if(*e=='('){ - push(*e); - } - - else if(*e==')'){ - while(s[top]!='('){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - - } - top--; - } - - else{ - while(priority(s[top])>=priority(*e)){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - - } - push(*e); - } - e++; - } - -while(top!=-1){ - postfix[p]=pop(); - printf("%c",postfix[p++]); - -} -printf("\n\n"); - - - -int a,b,c; -int j=0; -while(postfix[j]!='\0'){ - - - if(isOperand(postfix[j])){ - printf("Enter the value of %c : ",postfix[j]); - int p; - scanf("%d",&p); - push_n(p); - - - }else if(postfix[j]==' '){} - else{ - a=pop_n(); - b=pop_n(); - - - - if(postfix[j]=='+') c=b+a; - if(postfix[j]=='-') c=b-a; - if(postfix[j]=='/') c=b/a; - if(postfix[j]=='*') c=b*a; - if(postfix[j]=='%') c=b%a; - push_n(c); - } - j=j+1; - -} -printf("\nEvaluation answer is : %d\n\n",pop_n()); -} - diff --git a/Insertion_sort/InsertionSortExample.java b/Insertion_sort/InsertionSortExample.java deleted file mode 100644 index e7c5e2c2..00000000 --- a/Insertion_sort/InsertionSortExample.java +++ /dev/null @@ -1,30 +0,0 @@ -public class InsertionSortExample { - public static void insertionSort(int array[]) { - int n = array.length; - for (int j = 1; j < n; j++) { - int key = array[j]; - int i = j-1; - while ( (i > -1) && ( array [i] > key ) ) { - array [i+1] = array [i]; - i--; - } - array[i+1] = key; - } - } - - public static void main(String a[]){ - int[] arr1 = {9,14,3,2,43,11,58,22}; - System.out.println("Before Insertion Sort"); - for(int i:arr1){ - System.out.print(i+" "); - } - System.out.println(); - - insertionSort(arr1);//sorting array using insertion sort - - System.out.println("After Insertion Sort"); - for(int i:arr1){ - System.out.print(i+" "); - } - } -} diff --git a/Java/Searching/LinearSearch.java b/Java/Searching/LinearSearch.java deleted file mode 100644 index 6c27df9b..00000000 --- a/Java/Searching/LinearSearch.java +++ /dev/null @@ -1,29 +0,0 @@ -// Java code for linearly searching x in arr[]. If x -// is present then return its location, otherwise -// return -1 - -class GFG -{ -public static int search(int arr[], int x) -{ - int n = arr.length; - for(int i = 0; i < n; i++) - { - if(arr[i] == x) - return i; - } - return -1; -} - -public static void main(String args[]) -{ - int arr[] = { 2, 3, 4, 10, 40 }; - int x = 10; - - int result = search(arr, x); - if(result == -1) - System.out.print("Element is not present in array"); - else - System.out.print("Element is present at index " + result); -} -} diff --git a/Kadanes/Kadane.kt b/Kadanes/Kadane.kt deleted file mode 100644 index 7e52f1fe..00000000 --- a/Kadanes/Kadane.kt +++ /dev/null @@ -1,18 +0,0 @@ -object KadanesAlgorithm { - /** - * **Time**: `O(n)` - * - * **Space**: `O(1)` - */ - fun maxSubArray(nums: IntArray): Int { - var maxSoFar = nums[0] - var maxEndingHere = nums[0] - - (1..nums.lastIndex).forEach { i -> - maxEndingHere = max(nums[i], maxEndingHere + nums[i]) - maxSoFar = max(maxSoFar, maxEndingHere) - } - - return maxSoFar - } -} \ No newline at end of file diff --git a/Link_List/.DS_Store b/Link_List/.DS_Store deleted file mode 100644 index 689a9ebf498e3a3e46c266ad382c80aef23efb26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOG*SW5UtV?8fG&~m$|~+APzkzn6)6|;0LDZ0Ts7dc@wwd6+DgC@V!(iHZ}+@ zWRxmMUL{qP&ucnKiHI)lHgl1gh%_ifr7|My9yJ}f^8~1MjN9$ye0AP;yOCk`vx{p# zk{h{~Yq^lI^?$N*LGGFuvMoiMqYegwfguBj)|~PFU*eY;P4b5!(Fz8F zfq%w;PTEzwz^43e{jxpYwF%`6g+jkV1p1{h};? diff --git a/Link_List/Link_List_Output.txt b/Link_List/Link_List_Output.txt deleted file mode 100644 index 28ec2991..00000000 --- a/Link_List/Link_List_Output.txt +++ /dev/null @@ -1,99 +0,0 @@ -1 for insert value at front: -2 for insert value at rear: -3 for insert value according to order: -4 for clear Link list: -5 for reverse Link list -6 for delete Link Node -7 for sorting Link list in ascending order -8 for display the list -9 for Exit -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:15 - -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:27 - -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:10 - -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:17 - -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:39 - -Enter which type of the operation you want to apply: 1 -Enter the value you want to insert:45 - -Enter which type of the operation you want to apply: 8 -45 39 17 10 27 15 - -Enter which type of the operation you want to apply: 5 -Link list Reverse Successful - -Enter which type of the operation you want to apply: 8 -15 27 10 17 39 45 - -Enter which type of the operation you want to apply: 7 - -Enter which type of the operation you want to apply: 8 -10 15 17 27 39 45 - -Enter which type of the operation you want to apply: 3 -Enter the value you want to insert:25 - -Enter which type of the operation you want to apply: 8 -10 15 17 25 27 39 45 - -Enter which type of the operation you want to apply: 5 -Link list Reverse Successful - -Enter which type of the operation you want to apply: 8 -45 39 27 25 17 15 10 - -Enter which type of the operation you want to apply: 6 -Enter your choice: -1 for Delete at first -2 for delete at last -3 for delete specific value1 - -Enter which type of the operation you want to apply: 8 -39 27 25 17 15 10 - -Enter which type of the operation you want to apply: 6 -Enter your choice: -1 for Delete at first -2 for delete at last -3 for delete specific value2 - -Enter which type of the operation you want to apply: 8 -39 27 25 17 15 - -Enter which type of the operation you want to apply: 6 -Enter your choice: -1 for Delete at first -2 for delete at last -3 for delete specific value3 - -enter specific value you want to delete:25 - -Enter which type of the operation you want to apply: 8 -39 27 17 15 - -Enter which type of the operation you want to apply: 2 -Enter the value you want to insert:17 - -Enter which type of the operation you want to apply: 8 -39 27 17 15 17 - -Enter which type of the operation you want to apply: 4 - -Enter which type of the operation you want to apply: 8 - - Ops!!! link list is null - - -Enter which type of the operation you want to apply: 9 - -Process returned 0 (0x0) execution time : 236.883 s -Press any key to continue. \ No newline at end of file diff --git a/Link_List/LinkedList.java b/Link_List/LinkedList.java deleted file mode 100755 index ba8c3776..00000000 --- a/Link_List/LinkedList.java +++ /dev/null @@ -1,197 +0,0 @@ - -import java.util.NoSuchElementException; - -// Class to create a Node that contains data and pointer to next Node -class Node{ - public T data; - public Node next; - - // Constructor to create a Node - public Node(T input){ - this.data = input; - this.next = null; - } -} - -// Class containing methods to be performed on Linked List -public class LinkedList { - - private Node head; - private int sizeOfList = 0; - - public LinkedList(){ - head = null; - } - - // Method to add an element to the start of the Linked List - public void addFront(T input){ - Node newNode = new Node(input); - newNode.next = head; - head = newNode; - sizeOfList++; - } - - // Method to add an element to the end of the Linked List - public void addLast(T input){ - if(head==null){ - Node newNode = new Node(input); - head = newNode; - sizeOfList = 1; - } else{ - Node temp = head; - while (temp.next != null){ - temp = temp.next; - } Node newNode = new Node(input); - temp.next = newNode; - sizeOfList++; - } - } - - - // Method to add an element at a given index - public void add(T input, int index){ - if (index<0 || index>sizeOfList){ - throw new IndexOutOfBoundsException("Invalid index."); - } - Node temp = head; - if(index ==0){ - addFront(input); - } else { - for (int i =0; i< index-1; i++){ - temp = temp.next; - } - Node newNode = new Node(input); - newNode.next = temp.next; - temp.next = newNode; - sizeOfList++; - } - } - - public boolean isEmpty() { - return sizeOfList == 0; - } - - // Method to remove the Firt element from the Linked List - public T removeFront(){ - if(isEmpty()){ - throw new NoSuchElementException(); - } - T removedElement = head.data; - head = head.next; - sizeOfList--; - - return removedElement; - } - - // Method to remove the front element from the Linked List - public T removeLast(){ - if(isEmpty()){ - throw new NoSuchElementException(); - } - T removedElement; - if(head.next == null){ - removedElement = head.data; - head = null; - }else{ - Node temp = head; - while ( temp.next.next!= null) - temp = temp.next; - removedElement = temp.next.data; - temp.next=null; - } - - sizeOfList--; - return removedElement; - } - - // Method to remove element at specific index from the Linked List - public T remove(int index){ - if(isEmpty()){ - throw new NoSuchElementException(); - }if(index<0 || index> sizeOfList){ - throw new IndexOutOfBoundsException(); - } - - if(index>0){ - Node temp = head; - for (int i =0; i temp = head; - for (int i = 0; i < sizeOfList; i++) { - if (temp.data == input) - return i; - else - temp = temp.next; - } - return -1; - } - - public void display() { - Node temp = head; - if (temp != null) { - System.out.print("["); - while (temp != null) { - System.out.print(temp.data+", "); - temp = temp.next; - } - System.out.print("\b\b]\n"); - } - } - - public int size() { - return sizeOfList; - } - - - public static void main(String[] args) { - - LinkedList list = new LinkedList(); - - list.addFront(10); - list.addFront(20); - - list.display(); - - list.addFront(30); - list.addFront(40); - - list.display(); - - list.removeFront(); - - list.display(); - - list.removeLast(); - list.display(); - - list.addLast(50); - list.addLast(60); - - list.remove(2); - list.display(); - - int found = list.search(20); - if (found >= 0) - System.out.println("Element found at index: " + found); - else - System.out.println("Element not found"); - - if (list.isEmpty()) - System.out.println("List is empty"); - else - System.out.println("List is not empty, Size of list: " + list.size()); - - } - -} diff --git a/Link_List/java/LinkedList.java b/Link_List/java/LinkedList.java deleted file mode 100644 index 33267774..00000000 --- a/Link_List/java/LinkedList.java +++ /dev/null @@ -1,81 +0,0 @@ - -public class LinkedList { - private Node head; - - public LinkedList() { - head = null; - } - - public void printHead() { - System.out.println(head.getValue()); - } - - //Creates linkedList with head value - public LinkedList(int v) { - head = new Node(v); - } - - // Method to insert a new node - public void addLast(int data) { - // Create a new node with given data - Node newNode = new Node(data); - newNode.nextNode = null; - - // If the Linked List is empty, - // then make the new node as head - if (this.head == null) { - this.head = newNode; - } - else { - // Else traverse till the last node - // and insert the newNode there - Node last = this.head; - while (last.nextNode != null) { - last = last.nextNode; - } - - // Insert the newNode at last node - last.setNextNode(newNode); - } - - } - - //Adds node to front of linked list - //(Essentially replaces the head) - public void addFirst(int data) { - Node newNode = new Node(data); - if(this.head != null) { - newNode.setNextNode(head); - } - - this.head = newNode; - } - - //removes last node from linked list - public void pop() { - - //Gets head node - Node lastNode = this.head; - - //Iterates over linked list - //Once final node is located it, the previous node's next node is set to null - //The loop is then broken - while(lastNode.getNextNode() != null) { - if(lastNode.getNextNode().getNextNode() == null) { - lastNode.setNextNode(null); - break; - } - - lastNode = lastNode.getNextNode(); - } - } - - //Method to display the content of the linked list - public void display() { - Node currentNode = this.head; - while(currentNode != null) { - System.out.println(currentNode.getValue()); - currentNode = currentNode.getNextNode(); - } - } -} \ No newline at end of file diff --git a/Link_List/java/Node.java b/Link_List/java/Node.java deleted file mode 100644 index dac1fe86..00000000 --- a/Link_List/java/Node.java +++ /dev/null @@ -1,21 +0,0 @@ -public class Node { - int value; - Node nextNode; - - public Node(int v) { - value = v; - nextNode = null; - } - - public int getValue() { - return this.value; - } - - public Node getNextNode() { - return this.nextNode; - } - - public void setNextNode(Node n) { - this.nextNode = n; - } -} \ No newline at end of file diff --git a/Link_List/javascript/linkedlist.js b/Link_List/javascript/linkedlist.js deleted file mode 100644 index 52519a4d..00000000 --- a/Link_List/javascript/linkedlist.js +++ /dev/null @@ -1,113 +0,0 @@ -// This is the javascript program for a linked list. It does basic addition, deletion of the -// elements in the list. - -class linkedlist{ - constructor() - { - this.size = 0; - this.head = null; - -//Node object declared as a class member - - this.elem = - class element{ - constructor(d) - { - this.data = d; - this.next = null; - } - } -} - -//Insert an element at the last of the list - -insert(data) - { - this.size++; - let new_node = new this.elem(data); - - if(this.head === null) - { - this.head = new_node; - - } - else{ - let last_node = this.head; - - while(last_node.next !== null) - last_node = last_node.next; - last_node.next = new_node; - } - } - -//insert an element at the specified index - -insertAt(data,index) - { - this.size++; - let curr_node = this.head, prev_node = curr_node, i = index; - let new_node = new this.elem(data); - if(i===0) - { - new_node.next = this.head; - this.head = new_node; - } - else - { - while(i--!==0) - { - prev_node = curr_node; - curr_node = curr_node.next; - } - prev_node.next = new_node; - new_node.next = curr_node; - -} - } - -//delete an element at the specified index - -deleteAt(index) - { - this.size--; - let curr_node = this.head,prev_node = curr_node, i = index; - if(i===0) - { - this.head = curr_node.next; - curr_node.next = null; - } - else - { - while(i--!==0) - { - prev_node = curr_node; - curr_node = curr_node.next; - } - prev_node.next = curr_node.next; - curr_node.next = null; - } - } - -//print the elemets of the list - -print() - { - let node = this.head; - while(node!==null) - { - console.log(node.data); - node = node.next; - } - console.log(`size: ${this.size}`); - } - -} - -//Demo list - -let my_list = new linkedlist(); -my_list.insert(4); -my_list.insert(6); -my_list.insert(8); -my_list.insert(10); -my_list.print(); \ No newline at end of file diff --git a/Link_List/link_list.c b/Link_List/link_list.c deleted file mode 100644 index 71e95ac8..00000000 --- a/Link_List/link_list.c +++ /dev/null @@ -1,235 +0,0 @@ -#include -#include - -struct Node{ - int value; - struct Node *ptr; -}; - -void InsertAtFront(struct Node **h,int val){ - struct Node* NewNode; - NewNode = (struct Node*)malloc(sizeof(struct Node)); - NewNode->value=val; - if(*h == NULL){ - NewNode->ptr = *h; - *h = NewNode; - }else{ - NewNode->ptr = *h ; - *h = NewNode; - } -} - -void InsertAtEnd(struct Node **h,int val){ - struct Node *NewNode,*temp; - NewNode = (struct Node*)malloc(sizeof(struct Node)); - NewNode->value = val; - temp = *h; - if(*h == NULL){ - *h = NewNode; - NewNode->ptr = NULL; - }else{ - while(temp->ptr != NULL) - temp = temp->ptr; - - temp->ptr = NewNode; - NewNode->ptr = NULL; - } -} - -void InsertAtOrder(struct Node **h,int val){ - struct Node *NewNode,*temp; - NewNode = (struct Node*)malloc(sizeof(struct Node)); - NewNode->value = val; - temp = *h; - if(*h == NULL){ - *h = NewNode; - NewNode->ptr = NULL; - }else if(temp->value >= val ){ - InsertAtFront(h,val); - } - else{ - while(temp->ptr->value <= val){ - temp = temp->ptr; - if(temp->ptr == NULL) - break; - } - if(temp->ptr == NULL){ - InsertAtEnd(h,val); - }else{ - NewNode->ptr = temp->ptr; - temp->ptr = NewNode; - } - } - -} - -void ReverseLinklist(struct Node **h){ - struct Node *temp_current, *NEXT, *PREVOUS; - temp_current = *h; - PREVOUS = NULL; - while(temp_current != NULL){ - NEXT = temp_current->ptr; - temp_current->ptr = PREVOUS; - PREVOUS = temp_current; - temp_current = NEXT; - } - *h = PREVOUS; -} - -void DELETE(struct Node **h){ - struct Node *temp,*NodetoBeDeleted; - temp = *h; - if(temp == NULL)printf("\nsorry, Link list is empty.\n"); - else if(temp->ptr == NULL){ - NodetoBeDeleted = temp; - free(NodetoBeDeleted); - }else{ - printf("Enter your choice:\n1 for Delete at first\n2 for delete at last\n3 for delete specific value"); - int n; - scanf("%d",&n); - if(n == 1){ - NodetoBeDeleted = temp; - temp = temp->ptr; - (*h) = temp; - free(NodetoBeDeleted); - }else if(n == 2){ - while(temp->ptr->ptr != NULL) temp = temp->ptr; - free(temp->ptr); - temp->ptr = NULL; - }else if(n == 3){ - printf("\nenter specific value you want to delete:"); - int val; - scanf("%d",&val); - while(temp->ptr->value != val) - temp = temp->ptr; - NodetoBeDeleted = temp->ptr; - temp->ptr = temp->ptr->ptr; - free(NodetoBeDeleted); - } - } -} - -void a_shorting(struct Node **h){ - struct Node *temp,*c,*i,*j; - int temp_value; - /* int n=0,p,q; - temp = *h; - c = *h; - while(c != NULL){ - c = c->ptr; - n=n+1; - } - printf("%d",n); - for(p=0;pvalue > temp->ptr->value && temp != NULL){ - temp_value = temp->value; - temp->value = temp->ptr->value; - temp->ptr->value = temp_value; - } - temp = temp->ptr; - } - temp=*h; - }*/ - - i=j=temp=*h; - while(i != NULL){ - while(j->ptr != NULL){ - if(j->value > j->ptr->value ){ - temp_value = j->value; - j->value = j->ptr->value; - j->ptr->value = temp_value; - } - j = j->ptr; - } - i = i->ptr; - j= *h; - } - -} -void clear_L(struct Node **h){ - struct Node *temp,*NodetobeDelete; - temp = *h; - while(temp != NULL){ - NodetobeDelete = temp; - temp = temp->ptr; - free(NodetobeDelete); - - } - (*h) = temp; -} - - -void Display(struct Node**h){ - struct Node *temp; - temp = *h; - if(temp == NULL) printf("\n Ops!!! link list is null \n"); - else {while(temp != NULL){ - printf("%d ",temp->value); - temp = temp->ptr; - } - } -} - - -int main(){ - struct Node *HEAD; - int n,val; - HEAD = NULL; - printf("1 for insert value at front:\n"); - printf("2 for insert value at rear:\n"); - printf("3 for insert value according to order:\n"); - printf("4 for clear Link list:\n"); - printf("5 for reverse Link list\n"); - printf("6 for delete Link Node\n"); - printf("7 for sorting Link list in ascending order \n"); - printf("8 for display the list\n"); - printf("9 for Exit\n"); - printf("Enter which type of the operation you want to apply: "); - scanf("%d",&n); - - while(n !=9){ - - switch(n){ - case 1: - printf("Enter the value you want to insert:"); - scanf("%d",&val); - InsertAtFront(&HEAD,val); - break; - case 2: - printf("Enter the value you want to insert:"); - scanf("%d",&val); - InsertAtEnd(&HEAD,val); - break; - case 3: - printf("Enter the value you want to insert:"); - scanf("%d",&val); - InsertAtOrder(&HEAD,val); - break; - case 4: - clear_L(&HEAD); - break; - case 5: - printf("Link list Reverse Successful\n"); - ReverseLinklist(&HEAD); - break; - case 6: - DELETE(&HEAD); - break; - case 7: - a_shorting(&HEAD); - break; - case 8: - Display(&HEAD); - printf("\n"); - break; - default: - printf("Enter specific value:\n"); - } - - printf("\nEnter which type of the operation you want to apply: "); - scanf("%d",&n); - } - return 0; - -} diff --git a/Link_List/linked-list.py b/Link_List/linked-list.py deleted file mode 100644 index cecc7a16..00000000 --- a/Link_List/linked-list.py +++ /dev/null @@ -1,41 +0,0 @@ -# A simple Python program for traversal of a linked list - -# Node class -class Node: - - # Function to initialise the node object - def __init__(self, data): - self.data = data # Assign data - self.next = None # Initialize next as null - - -# Linked List class contains a Node object -class LinkedList: - - # Function to initialize head - def __init__(self): - self.head = None - - # This function prints contents of linked list - # starting from head - def printList(self): - temp = self.head - while (temp): - print temp.data, - temp = temp.next - - -# Code execution starts here -if __name__=='__main__': - - # Start with the empty list - llist = LinkedList() - - llist.head = Node(1) - second = Node(2) - third = Node(3) - - llist.head.next = second; # Link first node with second - second.next = third; # Link second node with the third node - - llist.printList() diff --git a/Link_List/swift/.DS_Store b/Link_List/swift/.DS_Store deleted file mode 100644 index d7200f9bf87c3d95839e8f9f9b2aec796bfbcd9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOG*SW5UtV?8r;lMT;&RLgLY_7Fc;A20R^Y&fzf>~BX|vO$n%ra6DyCR3!xf@)=zOI&%reB*)e<8^Qun3k6!JdWxYI zj{f9+tz$N{a8XY_)MtKAUbM`P@l$aZZ4ILi27-Yp1IN~!^ZviYFH=qOryVcRky^Z{BHfSJ>Inm#M Jf`MOP;0=2@E8GA8 diff --git a/Link_List_Python/Reverse_Linked_list.py b/Link_List_Python/Reverse_Linked_list.py deleted file mode 100644 index d5a07dea..00000000 --- a/Link_List_Python/Reverse_Linked_list.py +++ /dev/null @@ -1,53 +0,0 @@ -# Define class Node -class Node: - def __init__(self, data): - self.data = data - self.next = None - - -# Define class Linked List -class LinkedList: - def __init__(self): - self.head = None - self.last_node = None - - def append(self, data): - if self.last_node is None: - self.head = Node(data) - self.last_node = self.head - else: - self.last_node.next = Node(data) - self.last_node = self.last_node.next - - def display(self): - current = self.head - while current is not None: - print(current.data, end=' ') - current = current.next - - -# Reverse a Linked Lists -def reverse_llist(llist): - before = None - current = llist.head - if current is None: - return - after = current.next - while after: - current.next = before - before = current - current = after - after = after.next - current.next = before - llist.head = current - - -a_list = LinkedList() -n = int(input('Enter how many elements')) -for i in range(n): - data = int(input()) - a_list.append(data) - -reverse_llist(a_list) -# Print the reversed Linked List -print(a_list.display()) diff --git a/Link_List_Python/link_list.py b/Link_List_Python/link_list.py deleted file mode 100644 index 1617c167..00000000 --- a/Link_List_Python/link_list.py +++ /dev/null @@ -1,70 +0,0 @@ -# A simple Python program to introduce a linked list - -# Node class -class Node: - - # Function to initialise the node object - def __init__(self, data): - self.data = data # Assign data - self.next = None # Initialize next as null - - -# Linked List class contains a Node object -class LinkedList: - - # Function to initialize head - def __init__(self): - self.head = None - - -# Code execution starts here -if __name__=='__main__': - - # Start with the empty list - llist = LinkedList() - - llist.head = Node(1) - second = Node(2) - third = Node(3) - - ''' - Three nodes have been created. - We have references to these three blocks as head, - second and third - - llist.head second third - | | | - | | | - +----+------+ +----+------+ +----+------+ - | 1 | None | | 2 | None | | 3 | None | - +----+------+ +----+------+ +----+------+ - ''' - - llist.head.next = second; # Link first node with second - - ''' - Now next of first Node refers to second. So they - both are linked. - - llist.head second third - | | | - | | | - +----+------+ +----+------+ +----+------+ - | 1 | o-------->| 2 | null | | 3 | null | - +----+------+ +----+------+ +----+------+ - ''' - - second.next = third; # Link second node with the third node - - ''' - Now next of second Node refers to third. So all three - nodes are linked. - - llist.head second third - | | | - | | | - +----+------+ +----+------+ +----+------+ - | 1 | o-------->| 2 | o-------->| 3 | null | - +----+------+ +----+------+ +----+------+ - ''' - diff --git a/Map/Maps.go b/Map/Maps.go deleted file mode 100644 index 3eac938b..00000000 --- a/Map/Maps.go +++ /dev/null @@ -1,47 +0,0 @@ -// Map is used for key value association and it is built on top of hashtable. -// Map is unordered group of elements. -//Below is the basic operations of Map in Go programming language. - -package main - -import "fmt" - -func main() { - //1. creating a map having key of string type and value is of integer type. - m := make(map[string]int) - - //2. Add elements in map - m["key1"] = 10 - m["key2"] = 20 - m["key3"] = 30 - fmt.Println("Map : ", m) - - //3. Length of map - fmt.Println("Length of map : ", len(m)) - - //4. Delete from Map - delete(m, "key2") - fmt.Println("Map after deletion : ", m) - - //5. Check wether the key present in map or not - val, status := m["key2"] - fmt.Println("Key having value", val, "is present in map : ", status) - - val1, status1 := m["key3"] - fmt.Println("Key having value", val1, "is present in map : ", status1) - - //6. Update the value - m["key1"] = 50 - fmt.Println("Updated Map : ", m) -} - -// To run the program, use following command -// go run Maps.go - -// Output is as follows: -// Map : map[key1:10 key2:20 key3:30] -// Length of map : 3 -// Map after deletion : map[key1:10 key3:30] -// Key having value 0 is present in map : false -// Key having value 30 is present in map : true -// Updated Map : map[key1:50 key3:30] \ No newline at end of file diff --git a/Mathematical_Algos/Prime_Number_Test b/Mathematical_Algos/Prime_Number_Test deleted file mode 100644 index 8f7f596f..00000000 --- a/Mathematical_Algos/Prime_Number_Test +++ /dev/null @@ -1,50 +0,0 @@ -/To Check a number is Prime or not. -int isprime(long int n) -{ - - //if n is 2 or 3 than it is a prime and the function will return 1. - if(n == 2) - return 1; - if(n == 3) - return 1; - - //if n has 2 or 3 as it's factor than it is a not prime and the function will return 0. - if(n % 2 == 0) - return 0; - if(n % 3 == 0) - return 0; - -//All even factors are eliminated because we have checked for n%2. -//now we have to check for odd numbers ,which are not a multiple of 3. -//Because we have already checked for n%3 ,so the number will not have a factor which is multiple of 3. - - long int i = 5; - long int w = 2; - -//we are running a while loop till square root of n - while(i * i <= n) - { - //To check if i divides n or not. - if(n % i == 0) - return 0; - ` //to skip the even factors we are adding a even number to i which is odd. - //odd + even results odd - i += w; - - //each time we are changing value of w to skip multiples of 3 - //initially w is 2 and i is 5 - // After first iteration i becomes 5+2 = 7 - //if we do not change the value of w and add 2 to 7, - //it will result to 9 which is a factor of 3, that is what we want to avoid. - //So we are toggling the value of w between 2,4 - //7+4 = 11 - //then again w becomes 2 - //i=11+2=13 and so on. - - - w = 6 - w; - } - - - return 1; -} diff --git a/Mathematical_Algos/SieveOfEratosthenes.cpp b/Mathematical_Algos/SieveOfEratosthenes.cpp deleted file mode 100644 index 04db8bbc..00000000 --- a/Mathematical_Algos/SieveOfEratosthenes.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -using namespace std; - -///time complexity : O(sqrt(n)log(log(n))) - -///Create a list of consecutive integers from 2 to n: (2, 3, 4, , n). -///Initially, let p equal 2, the first prime number. -///Starting from p, count up in increments of p and mark each of these numbers greater than p itself in the list. These numbers will be 2p, 3p, 4p, etc.; note that some of them may have already been marked. -///Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let p now equal this number (which is the next prime), and repeat from step 3. - -int main() -{ - - int n; - cout<<"Enter n: "; - cin>>n; - - bool* arr = new bool[n+1]; - - for(int i=1;i<=n;i++){ //creating a list of the first n integers - arr[i] = true; - } - ///or use memset(arr,true,sizeof(arr)) in cstring library to initialize all elements to true - for(int i=2;i<=sqrt(n);i++){ - - if(arr[i]){ //element is prime - for(int j=2*i;j<=n;j+=i){ - arr[j] = false; - } - } - } - - for(int i=2;i<=n;i++){ - if(arr[i]){ - cout< -using namespace std; -#define ll long long - -#define M 1000000007 -// The exp function calucates (a^b)%M value for larger inputs of a,b and M should be a larhe prime number -ll exp(ll x,ll n,ll m) -{ - if(n==0) - return 1; - else if(n%2 == 0) //n is even - return exp((x*x)%m,n/2,m); - else //n is odd - return (x*exp((x*x)%m,(n-1)/2,m))%m; - -} -int main() { - - ll a=167; - ll b=89; - - ll ans=exp(a,b,M); - cout< -#define SIZE 3 - -int main() -{ - int A[SIZE][SIZE]; - int row, col, total=0; - - printf("Enter elements in matrix of size 3x3: \n"); - for(row=0; row= (row * col)/2) - { - printf("\nThe given matrix is a Sparse matrix."); - } - else - { - printf("\nThe given matrix is not Sparse matrix."); - } - - return 0; -} diff --git a/Matrix/MatrixTranspose.c b/Matrix/MatrixTranspose.c deleted file mode 100644 index 4ff20336..00000000 --- a/Matrix/MatrixTranspose.c +++ /dev/null @@ -1,135 +0,0 @@ -#include -#include -#include -#include - -#define SIZE 20 - -struct DataItem { - int data; - int key; -}; - -struct DataItem* hashArray[SIZE]; -struct DataItem* dummyItem; -struct DataItem* item; - -int hashCode(int key) { - return key % SIZE; -} - -struct DataItem *search(int key) { - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty - while(hashArray[hashIndex] != NULL) { - - if(hashArray[hashIndex]->key == key) - return hashArray[hashIndex]; - - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - return NULL; -} - -void insert(int key,int data) { - - struct DataItem *item = (struct DataItem*) malloc(sizeof(struct DataItem)); - item->data = data; - item->key = key; - - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty or deleted cell - while(hashArray[hashIndex] != NULL && hashArray[hashIndex]->key != -1) { - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - hashArray[hashIndex] = item; -} - -struct DataItem* delete(struct DataItem* item) { - int key = item->key; - - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty - while(hashArray[hashIndex] != NULL) { - - if(hashArray[hashIndex]->key == key) { - struct DataItem* temp = hashArray[hashIndex]; - - //assign a dummy item at deleted position - hashArray[hashIndex] = dummyItem; - return temp; - } - - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - return NULL; -} - -void display() { - int i = 0; - - for(i = 0; ikey,hashArray[i]->data); - else - printf(" ~~ "); - } - - printf("\n"); -} - -int main() { - dummyItem = (struct DataItem*) malloc(sizeof(struct DataItem)); - dummyItem->data = -1; - dummyItem->key = -1; - - insert(1, 20); - insert(2, 70); - insert(42, 80); - insert(4, 25); - insert(12, 44); - insert(14, 32); - insert(17, 11); - insert(13, 78); - insert(37, 97); - - display(); - item = search(37); - - if(item != NULL) { - printf("Element found: %d\n", item->data); - } else { - printf("Element not found\n"); - } - - delete(item); - item = search(37); - - if(item != NULL) { - printf("Element found: %d\n", item->data); - } else { - printf("Element not found\n"); - } -} diff --git a/Matrix/Matrix_transpose.c b/Matrix/Matrix_transpose.c deleted file mode 100644 index 4ff20336..00000000 --- a/Matrix/Matrix_transpose.c +++ /dev/null @@ -1,135 +0,0 @@ -#include -#include -#include -#include - -#define SIZE 20 - -struct DataItem { - int data; - int key; -}; - -struct DataItem* hashArray[SIZE]; -struct DataItem* dummyItem; -struct DataItem* item; - -int hashCode(int key) { - return key % SIZE; -} - -struct DataItem *search(int key) { - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty - while(hashArray[hashIndex] != NULL) { - - if(hashArray[hashIndex]->key == key) - return hashArray[hashIndex]; - - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - return NULL; -} - -void insert(int key,int data) { - - struct DataItem *item = (struct DataItem*) malloc(sizeof(struct DataItem)); - item->data = data; - item->key = key; - - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty or deleted cell - while(hashArray[hashIndex] != NULL && hashArray[hashIndex]->key != -1) { - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - hashArray[hashIndex] = item; -} - -struct DataItem* delete(struct DataItem* item) { - int key = item->key; - - //get the hash - int hashIndex = hashCode(key); - - //move in array until an empty - while(hashArray[hashIndex] != NULL) { - - if(hashArray[hashIndex]->key == key) { - struct DataItem* temp = hashArray[hashIndex]; - - //assign a dummy item at deleted position - hashArray[hashIndex] = dummyItem; - return temp; - } - - //go to next cell - ++hashIndex; - - //wrap around the table - hashIndex %= SIZE; - } - - return NULL; -} - -void display() { - int i = 0; - - for(i = 0; ikey,hashArray[i]->data); - else - printf(" ~~ "); - } - - printf("\n"); -} - -int main() { - dummyItem = (struct DataItem*) malloc(sizeof(struct DataItem)); - dummyItem->data = -1; - dummyItem->key = -1; - - insert(1, 20); - insert(2, 70); - insert(42, 80); - insert(4, 25); - insert(12, 44); - insert(14, 32); - insert(17, 11); - insert(13, 78); - insert(37, 97); - - display(); - item = search(37); - - if(item != NULL) { - printf("Element found: %d\n", item->data); - } else { - printf("Element not found\n"); - } - - delete(item); - item = search(37); - - if(item != NULL) { - printf("Element found: %d\n", item->data); - } else { - printf("Element not found\n"); - } -} diff --git a/Matrix/TransposeSparse.c b/Matrix/TransposeSparse.c deleted file mode 100644 index 17e0652f..00000000 --- a/Matrix/TransposeSparse.c +++ /dev/null @@ -1,69 +0,0 @@ -#include - -#define MAX 20 - -void printsparse(int[][3]); -void readsparse(int[][3]); -void transpose(int[][3],int[][3]); - -int main() -{ - int b1[MAX][3],b2[MAX][3],m,n; - printf("Enter the size of matrix (rows,columns):"); - - scanf("%d%d",&m,&n); - b1[0][0]=m; - b1[0][1]=n; - - readsparse(b1); - transpose(b1,b2); - printsparse(b2); -} - -void readsparse(int b[MAX][3]) -{ - int i,t; - printf("\nEnter no. of non-zero elements:"); - scanf("%d",&t); - b[0][2]=t; - - for(i=1;i<=t;i++) - { - printf("\nEnter the next triple(row,column,value):"); - scanf("%d%d%d",&b[i][0],&b[i][1],&b[i][2]); - } -} - -void printsparse(int b[MAX][3]) -{ - int i,n; - n=b[0][2]; //no of 3-triples - - printf("\nAfter Transpose:\n"); - - printf("\nrow\t\tcolumn\t\tvalue\n"); - for(i=0;i<=n;i++) - printf("%d\t\t%d\t\t%d\n",b[i][0],b[i][1],b[i][2]); -} - -void transpose(int b1[][3],int b2[][3]) -{ - int i,j,k,n; - b2[0][0]=b1[0][1]; - b2[0][1]=b1[0][0]; - b2[0][2]=b1[0][2]; - - k=1; - n=b1[0][2]; - - for(i=0;i -#include -#define mod 1000000007 -typedef long long int lli; -lli fib(lli n,lli memo[]) -{ - lli res; - if(memo[n]!=0) - return memo[n]; - if(n==1 || n==2) - res = 1; - else - res = fib(n-1,memo) + fib(n-2,memo); - memo[n]=res; - return res; -} -using namespace std; -int main() -{ - lli memo[100000]={0},n,p; - cout<<"Enter the value of n :\n"; - cin>>n; - p = fib(n,memo); - cout< transactions = new ArrayList<>(); - transactions.add("aa"); - transactions.add("bb"); - transactions.add("dd"); - transactions.add("ee"); - - transactions.add("22"); - transactions.add("11"); - transactions.add("44"); - transactions.add("33"); - transactions.add("55"); - - MerkleTree merkleTree = new MerkleTree(transactions); - System.out.println(merkleTree.getMerkleRoot().get(0)); - } - - - -} diff --git a/Merkle Tree/MerkleTree.java b/Merkle Tree/MerkleTree.java deleted file mode 100644 index bb49a9ea..00000000 --- a/Merkle Tree/MerkleTree.java +++ /dev/null @@ -1,36 +0,0 @@ -package blockchain; -import java.util.*; - - -public class MerkleTree { - private List transactions; - public MerkleTree(List transactions) { - this.transactions=transactions; - } - - public List getMerkleRoot(){ - return construct(this.transactions); - } - - private List construct (List transactions){ - - if(transactions.size() ==1) return transactions; - - List updatedList = new ArrayList<>(); - - for(int i=0; i = N: - return True - - # Consider this column and try placing - # this queen in all rows one by one - for i in range(N): - - if isSafe(board, i, col): - # Place this queen in board[i][col] - board[i][col] = 1 - - # recur to place rest of the queens - if solveNQUtil(board, col + 1) == True: - return True - - # If placing queen in board[i][col - # doesn't lead to a solution, then - # queen from board[i][col] - board[i][col] = 0 - - # if the queen can not be placed in any row in - # this colum col then return false - return False - -# This function solves the N Queen problem using -# Backtracking. It mainly uses solveNQUtil() to -# solve the problem. It returns false if queens -# cannot be placed, otherwise return true and -# placement of queens in the form of 1s. -# note that there may be more than one -# solutions, this function prints one of the -# feasible solutions. -def solveNQ(): - board = [ [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0] - ] - - if solveNQUtil(board, 0) == False: - print "Solution does not exist" - return False - - printSolution(board) - return True - -# driver program to test above function -solveNQ() diff --git a/Python/Searching/CocktailSort.py b/Python/Searching/CocktailSort.py deleted file mode 100644 index 290f64bb..00000000 --- a/Python/Searching/CocktailSort.py +++ /dev/null @@ -1,24 +0,0 @@ -def cocktail(a): - for i in range(len(a)//2): - swap = False - for j in range(1+i, len(a)-i): - # test whether the two elements are in the wrong order - if a[j] < a[j-1]: - # let the two elements change places - a[j], a[j-1] = a[j-1], a[j] - swap = True - # we can exit the outer loop here if no swaps occurred. - if not swap: - break - swap = False - for j in range(len(a)-i-1, i, -1): - if a[j] < a[j-1]: - a[j], a[j-1] = a[j-1], a[j] - swap = True - if not swap: - break - -num_list = [75, 16, 55, 19, 48, 14, 2, 61, 22, 100] -print("Before: ", num_list) -cocktail(num_list) -print("After: ", num_list) diff --git a/Python/Searching/LinearSearch.py b/Python/Searching/LinearSearch.py deleted file mode 100644 index be8ac371..00000000 --- a/Python/Searching/LinearSearch.py +++ /dev/null @@ -1,20 +0,0 @@ -# Python3 code to linearly search x in arr[]. -# If x is present then return its location, -# otherwise return -1 - -def search(arr, n, x): - - for i in range (0, n): - if (arr[i] == x): - return i; - return -1; - -# Driver Code -arr = [ 2, 3, 4, 10, 40 ]; -x = 10; -n = len(arr); -result = search(arr, n, x) -if(result == -1): - print("Element is not present in array") -else: - print("Element is present at index", result); diff --git a/Queue_By_Stack/Simple_Queue_By_Stack.c b/Queue_By_Stack/Simple_Queue_By_Stack.c deleted file mode 100644 index 39b4ee96..00000000 --- a/Queue_By_Stack/Simple_Queue_By_Stack.c +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#define max 10 -int top1=-1,top2=-1,s1[max],s2[max]; -void insert(int p){ - if(top1==max) - printf("queue is full"); - else{ - top1++; - s1[top1] = p; - } -} -void push2(int p){ -if(top2==max) - printf("queue is full"); - else{ - top2++; - s2[top2] = p; - } -} -int pop1(){ - int r; - r=s1[top1]; - top1--; - return r; - -} -void delete1(){ - int i; - if(top2==-1 && top1==-1){ - printf("queue is empty"); - } - else if(top2==-1){ - for(i=top1;i>=0;i--){ - push2(pop1()); - } - - printf("Deleted iteam is %d\n",s2[top2--]); - } - else{ - printf("Deleted iteam is %d\n",s2[top2--]); - } -} -void display(){ - int i; - if(top1==-1 && top2==-1) printf("queue is empty\n"); - for(i=top2;i>=0;i--){ - printf("%d | ",s2[i]); - } - for(i=0;i<=top1;i++){ - printf("%d | ",s1[i]); - } - printf("\n"); - -} - - -int main() -{ - printf(" 1-insert \n 2-delete \n 3-display\n 4-exit\n"); - int ins,c=0; - while(c!=4){ - printf("enter your choise : "); - scanf("%d",&c); - - switch(c){ - case 1: - printf("enter element: "); - scanf("%d",&ins); - insert(ins); - break; - case 2: delete1(); - break; - case 3: display(); - - break; - default: exit(0); - break; - } - } - return 0; -} - - diff --git a/Queue_By_Stack/Simple_Queue_By_Stack_Output.txt b/Queue_By_Stack/Simple_Queue_By_Stack_Output.txt deleted file mode 100644 index 11b81a79..00000000 --- a/Queue_By_Stack/Simple_Queue_By_Stack_Output.txt +++ /dev/null @@ -1,30 +0,0 @@ - 1-insert - 2-delete - 3-display - 4-exit -enter your choise : 1 -enter element: 10 -enter your choise : 1 -enter element: 20 -enter your choise : 1 -enter element: 30 -enter your choise : 3 -10 | 20 | 30 | -enter your choise : 2 -Deleted iteam is 10 -enter your choise : 3 -20 | 30 | -enter your choise : 2 -Deleted iteam is 20 -enter your choise : 3 -30 | -enter your choise : 2 -Deleted iteam is 30 -enter your choise : 3 -queue is empty - -enter your choise : 4 - -Process returned 0 (0x0) execution time : 57.880 s -Press any key to continue. - diff --git a/README.md b/README.md deleted file mode 100644 index 4fcccee4..00000000 --- a/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# 🎃 Data-Structure Project 🎃 - - -Use this project to make your first contribution to an open source project on GitHub. Practice making your first pull request to a public repository before doing the real thing! - -Celebrate [Hacktoberfest](https://hacktoberfest.digitalocean.com/) by getting involved in the open source community by completing some simple tasks in this project. - -This repository is open to all members of the GitHub community. Any member may contribute to this project without being a collaborator. - -https://github.com/Vatsalparsaniya/Data-Structure - - -## What is Hacktoberfest? - -A month-long celebration from October 1st - 31st sponsored by Digital Ocean and GitHub to get people involved in Open Source. Create your very first pull request to any public repository on GitHub and contribute to the open source developer community. - -https://hacktoberfest.digitalocean.com/ - -## How to contribute to this project - -Here are quick and painless ways to contribute to this project: - -- Add your name to the CONTRIBUTORS.md file -- Create Data-structure Program in a language of your choice - -Choose one or all , make a pull request for your work and wait for it to be merged! - -### check [CONTRIBUTING.md](/CONTRIBUTING.md) - -## Getting started - -1) Fork this repository (Click the Fork button in the top right of this page, click your Profile Image) -2) Clone your fork down to your local machine - -`git clone https://github.com/your-username/Data-Structure.git` - -3) Create a branch - -`git checkout -b branch-name` - -4) Make your changes (choose from any task listed above) -5) Commit and push - -```bash -git add . -git commit -m 'Commit message' -git push origin branch-name -``` - -6) Create a new pull request from your forked repository (Click the New Pull Request button located at the top of your repo) -7) Wait for your PR review and merge approval! -8) Star this repository if you had fun! diff --git a/Red_black_tree/red_black.cpp b/Red_black_tree/red_black.cpp deleted file mode 100644 index 81844c5a..00000000 --- a/Red_black_tree/red_black.cpp +++ /dev/null @@ -1,360 +0,0 @@ -#include - using namespace std; - -struct node { - int data{}; - node* left = nullptr; - node* right = nullptr; - node* parent = nullptr; - string color; -}; - - class RB_TREE { - - node* root; - - public: - RB_TREE() : root(nullptr) {} - - node* GetRoot(){ return root; } - - void InsertNode(int stuff) { - if(root == nullptr){ - root = new node(); - root->data = stuff; - root->parent = nullptr; - root->color = "BLACK"; - cout << "Element inserted.\n"; - } - else { - auto linker = GetRoot(); - node* newnode = new node(); - newnode->data = stuff; - - while(linker != nullptr){ - if(linker->data > stuff){ - if(linker->left == nullptr){ - linker->left = newnode; - newnode->color = "RED"; - newnode->parent = linker; - cout << "Element inserted.\n"; break; } - else { linker = linker->left; } - } else { - if(linker->right == nullptr){ - linker->right = newnode; - newnode->color = "RED"; - newnode->parent = linker; - cout << "Element inserted.\n"; break; } - else { linker = linker->right; } - } - } - RB_Insert_Fixup(newnode); - } - } - - void RB_Insert_Fixup(node* z) { - while(z->parent->color == "RED") { - auto grandparent = z->parent->parent; - auto uncle = GetRoot(); - if(z->parent == grandparent->left) { - if(grandparent->right) { uncle = grandparent->right; } - if(uncle->color == "RED"){ - z->parent->color = "BLACK"; - uncle->color = "BLACK"; - grandparent->color = "RED"; - if(grandparent->data != root->data){ z = grandparent; } - else { break; } - } - else if(z == grandparent->left->right) { - LeftRotate(z->parent); - } - else { - z->parent->color = "BLACK"; - grandparent->color = "RED"; - RightRotate(grandparent); - if(grandparent->data != root->data){ z = grandparent; } - else { break; } - } - } - else { - if(grandparent->left) { uncle = grandparent->left; } - if(uncle->color == "RED"){ - z->parent->color = "BLACK"; - uncle->color = "BLACK"; - grandparent->color = "RED"; - if(grandparent->data != root->data){ z = grandparent; } - else { break; } - } - else if(z == grandparent->right->left){ - RightRotate(z->parent); - } - else { - z->parent->color = "BLACK"; - grandparent->color = "RED"; - LeftRotate(grandparent); - if(grandparent->data != root->data){ z = grandparent; } - else { break; } - } - } - } - root->color = "BLACK"; - } - - - void RemoveNode(node* parent, node* curr, int stuff) { - if(curr == nullptr) { return; } - if(curr->data == stuff) { - //CASE -- 1 - if(curr->left == nullptr && curr->right == nullptr) { - if(parent->data == curr->data){ root = nullptr; } - else if(parent->right == curr) { - RB_Delete_Fixup(curr); - parent->right = nullptr; - } - else { - RB_Delete_Fixup(curr); - parent->left = nullptr; - } - } - //CASE -- 2 - else if(curr->left != nullptr && curr->right == nullptr) { - int swap = curr->data; - curr->data = curr->left->data; - curr->left->data = swap; - RemoveNode(curr, curr->right, stuff); - } - else if(curr->left == nullptr && curr->right != nullptr) { - int swap = curr->data; - curr->data = curr->right->data; - curr->right->data = swap; - RemoveNode(curr, curr->right, stuff); - } - //CASE -- 3 - else { - bool flag = false; - node* temp = curr->right; - while(temp->left) { flag = true; parent = temp; temp = temp->left; } - if(!flag) { parent = curr; } - int swap = curr->data; - curr->data = temp->data; - temp->data = swap; - RemoveNode(parent, temp, swap); - } - } - } - - void Remove(int stuff) { - auto temp = root; - auto parent = temp; - bool flag = false; - if(!temp) { RemoveNode(nullptr, nullptr, stuff); } - - while(temp) { - if(stuff == temp->data) { flag = true; RemoveNode(parent, temp, stuff); break; } - else if(stuff < temp->data) { parent = temp ; temp = temp->left; } - else { parent = temp ; temp = temp->right; } - } - - if(!flag) { cout << "\nElement doesn't exist in the table"; } - } - - void RB_Delete_Fixup(node* z) { - while(z->data != root->data && z->color == "BLACK") { - auto sibling = GetRoot(); - if(z->parent->left == z) { - if(z->parent->right){ sibling = z->parent->right; } - if(sibling) { - //CASE -- 1 - if(sibling->color == "RED") { - sibling->color = "BLACK"; - z->parent->color = "RED"; - LeftRotate(z->parent); - sibling = z->parent->right; - } - //CASE -- 2 - if(sibling->left == nullptr && sibling->right == nullptr) { - sibling->color = "RED"; - z = z->parent; - } - else if(sibling->left->color == "BLACK" && sibling->right->color == "BLACK") { - sibling->color = "RED"; - z = z->parent; - } - //CASE -- 3 - else if(sibling->right->color == "BLACK") { - sibling->left->color = "BLACK"; - sibling->color = "RED"; - RightRotate(sibling); - sibling = z->parent->right; - } else { - sibling->color = z->parent->color; - z->parent->color = "BLACK"; - if(sibling->right){ sibling->right->color = "BLACK"; } - LeftRotate(z->parent); - z = root; - } - } - } else { - if(z->parent->right == z){ - if(z->parent->left){ sibling = z->parent->left; } - if(sibling) { - //CASE -- 1 - if(sibling->color == "RED"){ - sibling->color = "BLACK"; - z->parent->color = "RED"; - RightRotate(z->parent); - sibling = z->parent->left; - } - //CASE -- 2 - if(sibling->left == nullptr && sibling->right == nullptr) { - sibling->color = "RED"; - z = z->parent; - } - else if(sibling->left->color == "BLACK" && sibling->right->color == "BLACK") { - sibling->color = "RED"; - z = z->parent; - } - //CASE -- 3 - else if(sibling->left->color == "BLACK") { - sibling->right->color = "BLACK"; - sibling->color = "RED"; - RightRotate(sibling); - sibling = z->parent->left; - } else { - sibling->color = z->parent->color; - z->parent->color = "BLACK"; - if(sibling->left){ sibling->left->color = "BLACK"; } - LeftRotate(z->parent); - z = root; - } - } - } - - } - } - z->color = "BLACK"; - } - - node* TreeSearch(int stuff) { - auto temp = GetRoot(); - if(temp == nullptr) { return nullptr; } - - while(temp) { - if(stuff == temp->data){ return temp; } - else if(stuff < temp->data){ temp = temp->left; } - else { temp = temp->right; } - } - return nullptr; - } - - void LeftRotate(node* x) { - node* nw_node = new node(); - if(x->right->left) { nw_node->right = x->right->left; } - nw_node->left = x->left; - nw_node->data = x->data; - nw_node->color = x->color; - x->data = x->right->data; - - x->left = nw_node; - if(nw_node->left){ nw_node->left->parent = nw_node; } - if(nw_node->right){ nw_node->right->parent = nw_node; } - nw_node->parent = x; - - if(x->right->right){ x->right = x->right->right; } - else { x->right = nullptr; } - - if(x->right){ x->right->parent = x; } - } - - void RightRotate(node* x) { - node* nw_node = new node(); - if(x->left->right){ nw_node->left = x->left->right; } - nw_node->right = x->right; - nw_node->data = x->data; - nw_node->color = x->color; - - x->data = x->left->data; - x->color = x->left->color; - - x->right = nw_node; - if(nw_node->left){ nw_node->left->parent = nw_node; } - if(nw_node->right){ nw_node->right->parent = nw_node; } - nw_node->parent = x; - - if(x->left->left){ x->left = x->left->left; } - else { x->left = nullptr; } - - if(x->left){ x->left->parent = x; } - } - - void PreorderTraversal(node* temp) { - if(!temp){ return; } - cout << "--> " << temp->data << "<" << temp->color << ">"; - PreorderTraversal(temp->left); - PreorderTraversal(temp->right); - } - - void PostorderTraversal(node *temp) { - if(!temp){ return; } - PostorderTraversal(temp->left); - PostorderTraversal(temp->right); - cout << "--> " << temp->data << "<" << temp->color << ">"; - } - }; - - void menu(){ - cout << "\n__________________________________________"; - cout << "\n\n --HEIGHT BALANCED BINARY SEARCH TREE--"; - cout << "\n --(Red-Black-Tree)--"; - cout << "\n__________________________________________"; - cout << "\n\n1. Insert elements into the tree."; - cout << "\n2. Search for an element."; - cout << "\n3. PRE-ORDER Tree-Walk."; - cout << "\n4. POST-ORDER Tree-Walk."; - cout << "\n5. Remove an element from the tree."; - cout << "\n6. Exit."; - cout << "\n__________________________________________"; - cout << "\nYour Choice -- "; - } - - - int main(){ - RB_TREE demo; - int info, input; - menu(); - cin >> info; - while(info != 6){ - switch (info){ - case 1: cout << "\nElement to be inserted -- "; - cin >> input; demo.InsertNode(input); - break; - - case 2: cout << "\nElement to be searched -- "; - cin >> input; - if(demo.TreeSearch(input)) { cout << "Element found.\n"; } - else { cout << "Element not found.\n"; } - break; - - case 3: cout << "Pre-Order Tree Walk "; - demo.PreorderTraversal(demo.GetRoot()); - cout << endl; - break; - - case 4: cout << "Post-Order Tree Walk "; - demo.PostorderTraversal(demo.GetRoot()); - cout << endl; - break; - - case 5: cout << "\nElement to be deleted? -- "; - cin >> input; - demo.Remove(input); - break; - - default: cout << "Wrong Choice.\n"; - } - cout << "\nAnything Else?"; - cin >> info; - } - cout << "\nTerminating.... "; - return 0; - } \ No newline at end of file diff --git a/Search In Linked List/Search_linked_list.c b/Search In Linked List/Search_linked_list.c deleted file mode 100644 index c53381fc..00000000 --- a/Search In Linked List/Search_linked_list.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -void create(); -void display(); -void search(); -struct Node{ - int data; - struct Node *next; -} -*Start =NULL; -int main() -{ - printf("This is my first link list program\n"); - while(1) - { - int choice; - printf("\nEnter your choice\n1.For creating\n2.For Displaying\n3.Searching element in liste\n4.For exit\n"); - scanf("%d",&choice); - switch(choice) - { - case 1:create(); - break; - case 2:display(); - break; - case 3:search(); - break; - case 4:exit(0); - } - } - - - return 0; -} - -void create() -{ - - int a; - do{ - - struct Node *current,*newnode; - newnode=(struct Node*)malloc(sizeof(struct Node)); - printf("\nEnter the data to be entered in the node: "); - scanf("%d",&newnode->data); - newnode->next=NULL; - if(Start==NULL) - { - current=newnode; - Start=newnode; - } - else{ - current->next=newnode; - current=newnode; - } - printf("Do you want to continue creating nodes\n1. to continue\n0. to stop: "); - scanf("%d",&a); - } - while(a!=0); -} -void display() -{ - struct Node *temp; - temp=Start; - printf("The linked list is: "); - if(Start==NULL) - { - printf("the list is empty\n"); - } - else{ - while(temp!=NULL) - { - printf("%d ",temp->data); - temp=temp->next; - } - printf("\n"); - } -} -void search() -{ - struct Node *temp; - temp=Start; - int item,ans=0; - printf("\nEnter the element to Search in list: "); - scanf("%d",&item); - if(Start==NULL) - printf("The list is empty "); - else{ - while(temp!=NULL) - { - if(temp->data==item) - { - ans=1; - break; - } - temp=temp->next; - } - if(ans==1) - printf("\nItem found\n"); - else - printf("\nItem not in list\n"); - } -} diff --git a/Search_Binary/SearchBinary.py b/Search_Binary/SearchBinary.py deleted file mode 100644 index 97bc51b3..00000000 --- a/Search_Binary/SearchBinary.py +++ /dev/null @@ -1,40 +0,0 @@ -class SearchBinary(object): - - def __init__(self, array): - """ - Initialize SearchBinary with a sorted array to be searched - :type l: list - """ - self.list = [] - self.replace_list(array) - - def replace_list(self, array): - if isinstance(array, list): - for i in array: - if not (isinstance(i,int) or isinstance(i, float)): - raise ValueError("all elements must be type number") - else: - raise AttributeError("search array must be list type") - - self.list = array - - - def find(self, key): - """ - Find the index of the key in the list given to SearchBinary - """ - left_boundry = 0 - right_boundry = len(self.list) - 1 - - while left_boundry <= right_boundry: - middle = (left_boundry + right_boundry) // 2 - if self.list[middle] < key: - left_boundry = middle + 1 - - elif self.list[middle] > key: - right_boundry = middle - 1 - - else: - return middle - # Returning -1 (invalid index) indicates not found - return -1 \ No newline at end of file diff --git a/Search_Binary/binarySearch.kt b/Search_Binary/binarySearch.kt deleted file mode 100644 index 87cd8408..00000000 --- a/Search_Binary/binarySearch.kt +++ /dev/null @@ -1,30 +0,0 @@ -class BinarySearch { - fun doBinarySearch () { - println("Please, enter some integer numbers using space bar") - val inputList = readLine()!!.split(' ').map(String::toInt) - val listSorted = inputList.sorted() - println("Please, enter the number you want to find") - val item = readLine()!!.toInt() - var low = 0 - var high = listSorted.size - 1 - var stepCount = 0 - var isItemFound = false - while (low <= high) { - val mid = (low + high) / 2 - val guess = listSorted[mid] - stepCount++ - when { - guess == item -> { - println("Your number $item was found in $stepCount steps") - isItemFound = true - } - guess > item -> high = mid -1 - else -> low = mid + 1 - } - if (isItemFound) break //"break" is not allowed in "when" statement - } - if (!isItemFound) { - println("Your number wasn't found") - } - } -} diff --git a/Shortest_Path_Algos/floyd-warshall.cpp b/Shortest_Path_Algos/floyd-warshall.cpp deleted file mode 100644 index e059ab50..00000000 --- a/Shortest_Path_Algos/floyd-warshall.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include -#define INFINITY 100000 -using namespace std; -int main(void) -{ - int num_vertices,num_edges,i,j,k,a,b,weight; - cout<<"Enter number of vertex: "<>num_vertices; - cout<<"Enter number of edges: "<>num_edges; - long cost[num_vertices][num_vertices] ; - for(i=0;i>a>>b>>weight; - cost[a-1][b-1] = weight; - } - int edges = num_edges; - for(i=0;i"< -#include -#define INFINITY 100000 -using namespace std; -void ShortestPathDistance(long *cost,int num_vertices,bool * visited) -{ - long dist[num_vertices] = {100000}; - vector distances; - long i,cnt = 2,j,u; - for(i=1;i>num_vertices; - if(num_vertices<=1) - return 0; - cout<<"Enter number of edges: "<>num_edges; - - long cost[num_vertices][num_vertices] ; - bool visited[num_vertices] = {false}; - - for(i=0;i>a>>b>>weight; - cost[a-1][b-1] = weight; - } - - cout< - -int n; - -void bubble_sort(int v[]){ - int i,k,aux = 0; - for(i = 0; i < n; i++){ - for(k = 0; k < n-1; k++){ - if(v[k] > v[k+1]){ - aux = v[k+1]; - v[k+1] = v[k]; - v[k] = aux; - } - } - } - -} - - -int main(){ - int j; - scanf("%d",&n); - int v[n]; - - for(j = 0; j < n; j++){ - scanf("%d",&v[j]); - } - bubble_sort(v); - for(j = 0; j < n; j++){ - if(j != n-1){ - printf("%d ",v[j]); - } - - else{ - printf("%d\n",v[j]); - } - } - - return 0; -} diff --git a/Shorting/Merge_sort.c b/Shorting/Merge_sort.c deleted file mode 100644 index cc33dfd7..00000000 --- a/Shorting/Merge_sort.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include - -#define SIZE 8 - -void merge(int a[], int tmp[], int left, int mid, int right); -void msort(int a[], int tmp[], int left, int right); -void merge_sort(int a[], int tmp[], const int size); -void display(int a[],const int size); - -int main() -{ - int a[SIZE] = {5,6,3,1,7,8,2,4}; - int tmp[SIZE]; - - printf("--- C Merge Sort Demonstration --- \n"); - - printf("Array before sorting:\n"); - display(a,SIZE); - - merge_sort(a, tmp, SIZE); - - printf("Array after sorting:\n"); - display(a,SIZE); - - return 0; -} - -void merge_sort(int a[], int tmp[], const int size) -{ - msort(a, tmp, 0, size - 1); -} - -void msort(int a[], int tmp[], int left, int right) -{ - int mid; - if (right > left) - { - mid = (right + left) / 2; - msort(a, tmp, left, mid); - msort(a, tmp, mid + 1, right); - merge(a, tmp, left, mid + 1, right); - } -} - -void merge(int a[], int tmp[], int left, int mid, int right) -{ - int i, left_end, count, tmp_pos; - left_end = mid - 1; - tmp_pos = left; - count = right - left + 1; - - while ((left <= left_end) && (mid <= right)) - { - if (a[left] <= a[mid]) - { - tmp[tmp_pos] = a[left]; - tmp_pos = tmp_pos + 1; - left = left +1; - } - else - { - tmp[tmp_pos] = a[mid]; - tmp_pos = tmp_pos + 1; - mid = mid + 1; - } - } - - while (left <= left_end) - { - tmp[tmp_pos] = a[left]; - left = left + 1; - tmp_pos = tmp_pos + 1; - } - while (mid <= right) - { - tmp[tmp_pos] = a[mid]; - mid = mid + 1; - tmp_pos = tmp_pos + 1; - } - - for (i = 0; i <= count; i++) - { - a[right] = tmp[right]; - right = right - 1; - } -} - -void display(int a[],const int size) -{ - int i; - for(i = 0; i < size; i++) - printf("%d ",a[i]); - - printf("\n"); -} diff --git a/Shorting/insertionSort.java b/Shorting/insertionSort.java deleted file mode 100644 index cc9c27d7..00000000 --- a/Shorting/insertionSort.java +++ /dev/null @@ -1,36 +0,0 @@ -class InsertionSort -{ - void insertionSort(int arr[]) - { - for (int i = 1; i < arr.length; ++i) - { - int key = arr[i]; - int j = i - 1; - while (j >= 0 && arr[j] > key) - { - arr[j + 1] = arr[j]; - j = j - 1; - } - arr[j + 1] = key; - } - } - - static void display(int arr[]) - { - for (int i = 0; i < arr.length; ++i) - System.out.print(arr[i] + " "); - - System.out.println(); - } - - public static void main(String args[]) - { - int arr[] = { 22, 21, 23, 15, 18, 5, 8 }; - System.out.println("Array before sorting: "); - display(arr); - InsertionSort obj = new InsertionSort(); - obj.insertionSort(arr); - System.out.println("\nArray after sorting: "); - display(arr); - } -} \ No newline at end of file diff --git a/Shorting/quick_sort.py b/Shorting/quick_sort.py deleted file mode 100644 index ce8d9ca8..00000000 --- a/Shorting/quick_sort.py +++ /dev/null @@ -1,23 +0,0 @@ -def partition(arr, first, last): - pivot = arr[last] - i = first - 1 - for j in range(first, last): - if (arr[j] <= pivot): - i += 1 - arr[i], arr[j] = arr[j], arr[i] - arr[i + 1], arr[last] = arr[last], arr[i + 1] - return (i + 1) - -#function to perform quicksort in array -def quickSort(arr, first, last): - if first < last: - #pivot is correct position of arr[last] - pivot = partition(arr, first, last) - quickSort(arr, first, pivot - 1) - quickSort(arr, pivot + 1, last) - -if __name__=="__main__": - arr= list(map(int, input().split())) - n=len(arr) - quickSort(arr, 0, n-1) - print (arr) \ No newline at end of file diff --git a/Shorting/selection_sort.py b/Shorting/selection_sort.py deleted file mode 100644 index 203acca6..00000000 --- a/Shorting/selection_sort.py +++ /dev/null @@ -1,26 +0,0 @@ -#Selection sort in Python - -a = [] -size = int(input("Enter the size of list\n")) -for i in range(size): - a.append(int(input())) - -for i in range(len(a)): - min = a[i] - index = i - - - for j in range(i+1,len(a)): - if min>a[j]: - min = a[j] - index = j - - - - - temp = a[i] - a[i] = min - a[index] = temp - -print("The sorted list is :") -print(a) diff --git a/Simple_Queue/Simple_Queue.c b/Simple_Queue/Simple_Queue.c deleted file mode 100644 index 339e83b7..00000000 --- a/Simple_Queue/Simple_Queue.c +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#define MAXSIZE 5 -int front=-1,rear=-1,q[MAXSIZE]; -void insert(int a){ - if(rear>=MAXSIZE){ - printf("sorry!! \n queue is full \n"); - } - else{ - if(front==-1) front=0; - rear++; - q[rear]=a; - printf("element %d is successfully added\n",a); - } -} - -void delete(){ - if(front<0){ - printf("Error!! \n Underflow condition\n"); - } - else if(front==rear){ - q[front]=0; - front=-1; - rear=-1; - - printf("element successfully delete\n"); - } - else{ - q[front]=0; - front++; - printf("element successfully delete\n"); - } - - -} - -void display(){ - int i=0; - for(i=0;i<=MAXSIZE;i++){ - printf(" %d |",q[i]); - } - printf("\n"); -} - -int main(){ - int choise=0,inse; - printf(" 1) insert element \n 2) delete element \n 3) display queue \n 4) exit\n "); - while(choise != 4){ - printf("enter your choice : "); - scanf("%d",&choise); - switch(choise) - { - case 1: - printf("enter a number which you want to add in queue:"); - scanf("%d",&inse); - insert(inse); - break; - case 2: - printf("you chose delete option\n"); - delete(); - break; - case 3: - printf("you chose display option\n"); - display(); - break; - case 4: - printf("\nI hope u enjoy this program \n"); - break; - } -} -return 0; - -} - - diff --git a/Simple_Queue/Simple_Queue.js b/Simple_Queue/Simple_Queue.js deleted file mode 100644 index 9c7ba0ca..00000000 --- a/Simple_Queue/Simple_Queue.js +++ /dev/null @@ -1,29 +0,0 @@ -class Queue { - constructor() { - this.queue = []; - } - - add(element) { - this.queue.push(element); - } - - remove() { - if (this.isEmpty()) { - return 'Empty Queue'; - } - return this.queue.shift(); - } - - peek() { - if (this.isEmpty()) { - return 'Empty Queue'; - } - - return this.queue[0]; - } - - isEmpty() { - return this.queue.length === 0; - } - } - \ No newline at end of file diff --git a/Simple_Queue/Simple_Queue_Output.txt b/Simple_Queue/Simple_Queue_Output.txt deleted file mode 100644 index 8780f37d..00000000 --- a/Simple_Queue/Simple_Queue_Output.txt +++ /dev/null @@ -1,82 +0,0 @@ - 1) insert element - 2) delete element - 3) display queue - 4) exit - enter your choice : 1 -enter a number which you want to add in queue:155 -element 155 is successfully added -enter your choice : 1 -enter a number which you want to add in queue:34 -element 34 is successfully added -enter your choice : 3 -you chose display option - 155 | 34 | 0 | 0 | 0 | 0 | -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 3 -you chose display option - 0 | 34 | 0 | 0 | 0 | 0 | -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 3 -you chose display option - 0 | 0 | 0 | 0 | 0 | 0 | -enter your choice : 1 -enter a number which you want to add in queue:27 -element 27 is successfully added -enter your choice : 1 -enter a number which you want to add in queue:65 -element 65 is successfully added -enter your choice : 1 -enter a number which you want to add in queue:87 -element 87 is successfully added -enter your choice : 1 -enter a number which you want to add in queue:32 -element 32 is successfully added -enter your choice : 3 -you chose display option - 27 | 65 | 87 | 32 | 0 | 0 | -enter your choice : 1 -enter a number which you want to add in queue:98 -element 98 is successfully added -enter your choice : 1 -enter a number which you want to add in queue:185 -element 185 is successfully added -enter your choice : 3 -you chose display option - 27 | 65 | 87 | 32 | 98 | 185 | -enter your choice : 1 -enter a number which you want to add in queue:188 -sorry!! - queue is full -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -element successfully delete -enter your choice : 2 -you chose delete option -Error!! - Underflow condition -enter your choice : 4 - -I hope u enjoy this program - -Process returned 0 (0x0) execution time : 106.070 s -Press any key to continue. - diff --git a/Simple_Queue/queue.java b/Simple_Queue/queue.java deleted file mode 100644 index afff1876..00000000 --- a/Simple_Queue/queue.java +++ /dev/null @@ -1,109 +0,0 @@ -import java.util.*; - -// Class for queue -class Queue -{ - private int arr[]; // array to store queue elements - private int front; // front points to front element in the queue - private int rear; // rear points to last element in the queue - private int capacity; // maximum capacity of the queue - private int count; // current size of the queue - - // Constructor to initialize queue - Queue(int size) - { - arr = new int[size]; - capacity = size; - front = 0; - rear = -1; - count = 0; - } - - // Utility function to remove front element from the queue - public void dequeue() - { - // check for queue underflow - if (isEmpty()) - { - System.out.println("UnderFlow\nProgram Terminated"); - System.exit(1); - } - - System.out.println("Removing " + arr[front]); - - front = (front + 1) % capacity; - count--; - } - - // Utility function to add an item to the queue - public void enqueue(int item) - { - // check for queue overflow - if (isFull()) - { - System.out.println("OverFlow\nProgram Terminated"); - System.exit(1); - } - - System.out.println("Inserting " + item); - - rear = (rear + 1) % capacity; - arr[rear] = item; - count++; - } - - // Utility function to return front element in the queue - public int peek() - { - if (isEmpty()) - { - System.out.println("UnderFlow\nProgram Terminated"); - System.exit(1); - } - return arr[front]; - } - - // Utility function to return the size of the queue - public int size() - { - return count; - } - - // Utility function to check if the queue is empty or not - public Boolean isEmpty() - { - return (size() == 0); - } - - // Utility function to check if the queue is empty or not - public Boolean isFull() - { - return (size() == capacity); - } - - // Queue implementation in java - public static void main (String[] args) - { - // create a queue of capacity 5 - Queue q = new Queue(5); - - q.enqueue(1); - q.enqueue(2); - q.enqueue(3); - - System.out.println("Front element is: " + q.peek()); - q.dequeue(); - System.out.println("Front element is: " + q.peek()); - - System.out.println("Queue size is " + q.size()); - - q.dequeue(); - q.dequeue(); - - if (q.isEmpty()) - System.out.println("Queue Is Empty"); - else - System.out.println("Queue Is Not Empty"); - } -} -//SOURCE: https://www.techiedelight.com/queue-implementation-in-java/ diff --git a/Simple_Queue/queue.swift b/Simple_Queue/queue.swift deleted file mode 100644 index d0c98f41..00000000 --- a/Simple_Queue/queue.swift +++ /dev/null @@ -1,271 +0,0 @@ -// -// queue.swift -// Queue -// -// Created by Steven Sim on 8/10/19. -// Copyright © 2019 Steven Sim. All rights reserved. -// - -import Foundation - -//To create Node property -public class Node { - var value: T - - init(value: T){ - self.value = value - } - - var next: Node? - weak var prev: Node? -} - -//Data Structure logics -public class DoubleLinkedList { - fileprivate var head: Node? - private var tail: Node? - - public var isEmpty: Bool { - return head == nil - } - - public var first: Node? { - return head; - } - - public var last: Node? { - return tail - } - - public func push(value: T) { - - let curr = Node(value: value) - - if let tailNode = tail { - curr.prev = tailNode - tailNode.next = curr - } else { - head = curr - } - - tail = curr - } - - public func getNode(index: Int) -> Node? { - - if index >= 0 { - var curr = head - var i = index - - while curr != nil { - if i == 0 { return curr } - i -= 1 - curr = curr!.next - } - } - - return nil - } - - public func getSize() -> Int{ - var curr = head - var i: Int = 0 - - while curr != nil { - i += 1 - curr = curr!.next - } - - return i - } - - public func pop(curr: Node) -> T { - let prev = curr.prev - let next = curr.next - - if let prev = prev { - prev.next = next - } else { - head = next - } - - next?.prev = prev - - if next == nil { - tail = prev - } - - curr.prev = nil - curr.next = nil - - return curr.value - } - - public func popAll() { - head = nil - tail = nil - } -} - - -public struct Queue { - - fileprivate var list = DoubleLinkedList() - - public var isEmpty: Bool { - return list.isEmpty - } - - public mutating func enqueue(_ element: T){ - list.push(value: element) - } - - public mutating func dequeue() -> T? { - guard !list.isEmpty, let element = list.first else { return nil } - - let removedElement = list.pop(curr: element) - - return removedElement - } - - public func peek() -> T? { - return list.first?.value - } - - public func getSize() -> Int { - return list.getSize() - } - - public func peekAt(index: Int) -> Node? { - return list.getNode(index: index) - } - - public func dequeueAll(){ - list.popAll() - } - -} - -public class BookStoreCustomer { - var queueId: String - var bookQty: Int - - init(queueId: String, bookQty: Int) { - self.queueId = queueId - self.bookQty = bookQty - } -} - -//Main Program -public func enqueueBuyer(){ - print("Enter queue id: ", terminator: "") - let queueId: String? = readLine() - print("Enter book quantity to buy: ", terminator: "") - let bookQty: Int? = Int(readLine()!) - - queue.enqueue(BookStoreCustomer(queueId: queueId!, bookQty: bookQty!)) -} - -public func clrScr(){ - for _ in 1...25 { - print("") - } -} - -public func separatorBar(length : Int){ - for _ in 1...length { - print("=", terminator: "") - } - print("") -} - -public func showQueue(){ - - if queue.isEmpty { - print("No data yet") - } - else{ - let header: String = String(format: "| %-4s | %-12s | %-10s |", ("No" as NSString).utf8String!,("ID" as NSString).utf8String!, ("Quantity" as NSString).utf8String!) - - separatorBar(length: header.count) - print(header) - separatorBar(length: header.count) - for i in 0 ..< queue.getSize() { - let curr = queue.peekAt(index: i) - print(String(format: "| %-4d | %-12s | %-10d |", i+1, (curr!.value.queueId as NSString).utf8String!, curr!.value.bookQty)) - } - separatorBar(length: header.count) - } - -} - -public func dequeueBuyer(){ - if queue.isEmpty { - print("No data yet") - } - else{ - if let buyer = queue.dequeue() { - print("Buyer with ID: \(buyer.queueId) served") - } - } -} - -public func dequeueAllBuyer(){ - queue.dequeueAll() - - print("All Buyer served") -} - -var queue = Queue() - -//Dummy data -queue.enqueue(BookStoreCustomer(queueId: "Q12", bookQty: 2)) -queue.enqueue(BookStoreCustomer(queueId: "Q14", bookQty: 3)) -queue.enqueue(BookStoreCustomer(queueId: "Q16", bookQty: 4)) - -while true { - - clrScr() - var choose: Int! = 0; - - print("Buying Book Queue Program") - print("=====================") - if let nextCustomer = queue.peek() { - print("Next Queue ID to Serve: \(nextCustomer.queueId)") - print("=====================") - } - print("Menu") - print("1. Queue Buyer") - print("2. Show") - print("3. Serve Buyer") - print("4. Serve All Buyer") - print("5. Exit") - - repeat { - print("Input: ", terminator: "") - if let str = readLine(){ - choose = Int(str) - } - } while choose < 1 || choose > 5; - - switch choose { - case 1: - enqueueBuyer() - case 2: - showQueue() - case 3: - dequeueBuyer() - case 4: - dequeueAllBuyer() - case 5: - print("Thank you for using this program :)") - default: - print("") - } - - _ = readLine() - - if choose == 5 { - break - } -} diff --git a/Simple_Queue/queue_linkedlist.c b/Simple_Queue/queue_linkedlist.c deleted file mode 100644 index e08b8a3a..00000000 --- a/Simple_Queue/queue_linkedlist.c +++ /dev/null @@ -1,103 +0,0 @@ -#include -#include -struct node -{ - int data; - struct node *next; - }; -struct node *front; -struct node *rear; -void insert(); -void delete(); -void display(); -void main () - { - int choice; - while(choice != 4) - { - printf("\n1.insert an element\n2.Delete an element\n3.Display the queue\n4.Exit\n"); - printf("\nEnter your choice ?"); - scanf("%d",& choice); - switch(choice) - { - case 1: - insert(); - break; - case 2: - delete(); - break; - case 3: - display(); - break; - case 4: - exit(0); - break; - default: - printf("\nEnter valid choice??\n"); - } - } - } - -void insert() -{ -struct node *ptr; -int item; - -ptr = (struct node *) malloc (sizeof(struct node)); - if(ptr == NULL) - { - printf("\nOVERFLOW\n"); - return; - } - else - { - printf("\nEnter value?\n"); - scanf("%d",&item); - ptr -> data = item; - if(front == NULL) - { - front = ptr; - rear = ptr; - front -> next = NULL; - rear -> next = NULL; - } - else - { - rear -> next = ptr; - rear = ptr; - rear->next = NULL; - } - } -} -void delete () -{ - struct node *ptr; - if(front == NULL) - { - printf("\nUNDERFLOW\n"); - return; - } - else - { - ptr = front; - front = front -> next; - free(ptr); - } -} -void display() -{ - struct node *ptr; - ptr = front; - if(front == NULL) - { - printf("\nEmpty queue\n"); - } - else - { printf("\nprinting values \n"); - while(ptr != NULL) - { - printf("\n%d\n",ptr -> data); - ptr = ptr -> next; - } - } - } diff --git a/Sorting/Bitonicsort.cpp b/Sorting/Bitonicsort.cpp deleted file mode 100644 index 1764443f..00000000 --- a/Sorting/Bitonicsort.cpp +++ /dev/null @@ -1,77 +0,0 @@ - -// Source : https://www.geeksforgeeks.org/bitonic-sort/ - -/* C++ Program for Bitonic Sort. Note that this program - works only when size of input is a power of 2. */ - -#include -#include -using namespace std; - -/*The parameter dir indicates the sorting direction, ASCENDING - or DESCENDING; if (a[i] > a[j]) agrees with the direction, - then a[i] and a[j] are interchanged.*/ -void compAndSwap(int a[], int i, int j, int dir) -{ - if (dir == (a[i] > a[j])) - swap(a[i], a[j]); -} - -/*It recursively sorts a bitonic sequence in ascending order, - if dir = 1, and in descending order otherwise (means dir=0). - The sequence to be sorted starts at index position low, - the parameter cnt is the number of elements to be sorted.*/ -void bitonicMerge(int a[], int low, int cnt, int dir) -{ - if (cnt > 1) - { - int k = cnt / 2; - for (int i = low; i < low + k; i++) - compAndSwap(a, i, i + k, dir); - bitonicMerge(a, low, k, dir); - bitonicMerge(a, low + k, k, dir); - } -} - -/* This function first produces a bitonic sequence by recursively - sorting its two halves in opposite sorting orders, and then - calls bitonicMerge to make them in the same order */ -void bitonicSort(int a[], int low, int cnt, int dir) -{ - if (cnt > 1) - { - int k = cnt / 2; - - // sort in ascending order since dir here is 1 - bitonicSort(a, low, k, 1); - - // sort in descending order since dir here is 0 - bitonicSort(a, low + k, k, 0); - - // Will merge wole sequence in ascending order - // since dir=1. - bitonicMerge(a, low, cnt, dir); - } -} - -/* Caller of bitonicSort for sorting the entire array of - length N in ASCENDING order */ -void sort(int a[], int N, int up) -{ - bitonicSort(a, 0, N, up); -} - -// Driver code -int main() -{ - int a[] = {3, 7, 4, 8, 6, 2, 1, 5}; - int N = sizeof(a) / sizeof(a[0]); - - int up = 1; // means sort in ascending order - sort(a, N, up); - - printf("Sorted array: \n"); - for (int i = 0; i < N; i++) - printf("%d ", a[i]); - return 0; -} diff --git a/Sorting/Bubble_Sort.c b/Sorting/Bubble_Sort.c deleted file mode 100644 index 27db70b6..00000000 --- a/Sorting/Bubble_Sort.c +++ /dev/null @@ -1,40 +0,0 @@ -#include - -int n; - -void bubble_sort(int v[]){ - int i,k,aux = 0; - for(i = 0; i < n; i++){ - for(k = 0; k < n-1; k++){ - if(v[k] > v[k+1]){ - aux = v[k+1]; - v[k+1] = v[k]; - v[k] = aux; - } - } - } - -} - - -int main(){ - int j; - scanf("%d",&n); - int v[n]; - - for(j = 0; j < n; j++){ - scanf("%d",&v[j]); - } - bubble_sort(v); - for(j = 0; j < n; j++){ - if(j != n-1){ - printf("%d ",v[j]); - } - - else{ - printf("%d\n",v[j]); - } - } - - return 0; -} diff --git a/Sorting/Counting_sort.c b/Sorting/Counting_sort.c deleted file mode 100644 index dc79973f..00000000 --- a/Sorting/Counting_sort.c +++ /dev/null @@ -1,33 +0,0 @@ -#include - -void counting_sort(int a[],int n,int max) -{ - int count[50]={0},i,j; - - for(i=0;imax) - max=a[i]; - } - - counting_sort(a,n,max); - return 0; -} \ No newline at end of file diff --git a/Sorting/Cpp/Sorting/Bubble_sort.cpp b/Sorting/Cpp/Sorting/Bubble_sort.cpp deleted file mode 100644 index b584cba1..00000000 --- a/Sorting/Cpp/Sorting/Bubble_sort.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -using namespace std; - -template -void bubble_sort(vector & vec) -{ - for(size_t i = 0; i < vec.size() - 1; i++) - { - for(size_t j = i + 1; j < vec.size(); j++) - { - if(vec[j - 1] > vec[j]) - swap(vec[j - 1], vec[j]); - } - } -} - -int main() -{ - size_t n; - cin>>n; - - vector arr(n); - - for(size_t i = 0; i < n; i++) - cin>>arr[i]; - - bubble_sort(arr); - - for(size_t i = 0; i < n; i++) - cout< -#include -using namespace std; - -void insertion_sort(vector & vec) -{ - const double EPS = 1e-9; - - for(size_t i = 0; i < vec.size(); i++) - { - for(size_t j = i + 1; j < vec.size(); j++) - { - if(vec[i] - vec[j] > EPS) - swap(vec[i], vec[j]); - } - } -} - -void bucket_sort(vector & vec) -{ - size_t n = vec.size(); - - vector bucket[n]; - - for(size_t i = 0; i < n; i++) - { - bucket[((size_t) vec[i] * n)].push_back(vec[i]); - } - - for(size_t i = 0; i < n; i++) - { - insertion_sort(bucket[i]); - } - - size_t next = 0; - - for(size_t i = 0; i < n; i++) - { - for(size_t j = 0; j < bucket[i].size(); j++) - { - vec[next++] = bucket[i][j]; - } - } -} - -int main(int argc, char ** argv) -{ - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - size_t n; - - if(print_input) - cout<<"Array size: "; - - cin>>n; - - vector arr(n); - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 0; i < n; i++) - cin>>arr[i]; - - bucket_sort(arr); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 0; i < n; i++) - cout< -#include -using namespace std; - -void insertion_sort(vector & vec) -{ - const double EPS = 1e-9; - - for(size_t i = 0; i < vec.size(); i++) - { - for(size_t j = i + 1; j < vec.size(); j++) - { - if(vec[i] - vec[j] > EPS) - swap(vec[i], vec[j]); - } - } -} - -void bucket_sort(vector & vec) -{ - size_t n = vec.size(); - - vector bucket[n]; - - for(size_t i = 0; i < n; i++) - { - bucket[((size_t) vec[i] * n)].push_back(vec[i]); - } - - for(size_t i = 0; i < n; i++) - { - insertion_sort(bucket[i]); - } - - size_t next = 0; - - for(size_t i = 0; i < n; i++) - { - for(size_t j = 0; j < bucket[i].size(); j++) - { - vec[next++] = bucket[i][j]; - } - } -} - -int main(int argc, char ** argv) -{ - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - size_t n; - - if(print_input) - cout<<"Array size: "; - - cin>>n; - - vector arr(n); - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 0; i < n; i++) - cin>>arr[i]; - - bucket_sort(arr); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 0; i < n; i++) - cout< -#include -using namespace std; - -template -bool greater_c(const T a,const T b) -{ - return a > b; -} - -template -bool lower_c(const T a, const T b) -{ - return a < b; -} - -size_t left(const size_t node) -{ - return node << 1; -} - -size_t right(const size_t node) -{ - return 1 + (node << 1); -} - -size_t parent(const size_t node) -{ - return node >> 1; -} - -template -void max_heapify(vector & heap, size_t position, size_t heap_size, bool comparator(T, T)) -{ - size_t l = left(position); - size_t r = right(position); - size_t high_priority; - - if(l < heap_size and comparator(heap[position], heap[l])) - { - high_priority = l; - } - else - { - high_priority = position; - } - - if(r < heap_size and comparator(heap[high_priority], heap[r])) - { - high_priority = r; - } - - if(high_priority != position) - { - swap(heap[position], heap[high_priority]); - max_heapify(heap, high_priority, heap_size, comparator); - } -} - -template -void build_heap(vector & heap, bool comparator(T, T)) -{ - - for(size_t i = heap.size() - 1; ; i--) - { - - max_heapify(heap, i, heap.size(), comparator); - if(i == 0) - break; - - } - -} - -template -void heap_sort(vector & heap, bool comparator(T, T) = lower_c) -{ - build_heap(heap, comparator); - - size_t heap_size = heap.size(); - - for(size_t i = heap.size() - 1; i >= 1; i--) - { - - swap(heap[0], heap[i]); - heap_size--; - max_heapify(heap, 0, heap_size, comparator); - - } - -} - -int main(int argc, char ** argv){ - - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - size_t n; - - if(print_input) - cout<<"Array size: "; - - cin>>n; - - vector arr(n); - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 0; i < n; i++) - cin>>arr[i]; - - heap_sort(arr); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 0; i < n; i++) - cout< -#include -using namespace std; - -template -void insertion_sort(vector & vec) -{ - for(size_t i = 0; i < vec.size() - 1; i++) - { - for(size_t j = i + 1; j < vec.size(); j++) - { - if(vec[i] > vec[j]) - swap(vec[i], vec[j]); - } - } -} - -int main() -{ - size_t n; - cin>>n; - - vector arr(n); - - for(size_t i = 0; i < n; i++) - cin>>arr[i]; - - insertion_sort(arr); - - for(size_t i = 0; i < n; i++) - cout< // input and output -#include // vector -using namespace std; - -template -void merge_sort(vector & vec, size_t l = 0, size_t r = 0) -{ - - static bool started = false; - - if(!started) - { - l = 0; - r = vec.size() - 1; - started = true; - } - - if(l == r) - return; - - size_t mid = (l + r) / 2; - - merge_sort(vec, l, mid); - merge_sort(vec, mid + 1, r); - - size_t pl = l; - size_t pr = mid + 1; - size_t next = 0; - - vector sorted(r - l + 1); - - while(pl <= mid or pr <= r) - { - - if(pl <= mid and pr <= r) - { - - if(vec[pr] < vec[pl]) - sorted[next] = vec[pr++]; - else - sorted[next] = vec[pl++]; - - } - else if(pl <= mid) - { - sorted[next] = vec[pl++]; - } - else - { - sorted[next] = vec[pr++]; - } - - next++; - - } - - for(size_t i = l; i <= r; i++) - vec[i] = sorted[i - l]; - - if(l == 0 and r == vec.size() - 1) - started = false; - -} - -int main(int argc, char ** argv) -{ - - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - size_t n; - if(print_input) - cout<<"Array size: "; - - cin>>n; - - vector vec(n); - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 0; i < n; i++) - cin>>vec[i]; - - merge_sort(vec); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 0; i < n; i++) - - cout< -#include -using namespace std; - -template -size_t partition(vector & vec, size_t p, size_t r) -{ - T x = vec[r]; - size_t i = p - 1; - for(size_t j = p; j < r; j++) - { - if(vec[j] <= x) - { - i++; - swap(vec[i], vec[j]); - } - } - swap(vec[i + 1], vec[r]); - return i + 1; -} - -template -void quick_sort(vector & vec, size_t p = 0, size_t r = 0) -{ - static bool started = false; - - if(!started) - { - started = true; - p = 1; - r = vec.size() - 1; - } - - if(p < r) - { - size_t q = partition(vec, p, r); - quick_sort(vec, p, q - 1); - quick_sort(vec, q + 1, r); - } - - if(p == 0 and r == vec.size() - 1) - started = false; -} - -int main(int argc, char ** argv) -{ - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - if(print_input) - cout<<"Array size: "; - - size_t n; - cin>>n; - - vector arr(n + 1); - arr[0] = 0; - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 1; i <= n; i++) - cin>>arr[i]; - - quick_sort(arr); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 1; i <= n; i++) - cout< -#include -using namespace std; - -void counting_sort(vector & origin, size_t digit, size_t exponent) -{ - vector temp(exponent + 1); - vector target(origin.size()); - - for(size_t i = 0; i < exponent; i++) - temp[i] = 0; - - for(size_t j = 0; j < origin.size(); j++) - { - temp[(origin[j]/digit) % exponent]++; - } - cout< & vec, size_t max_input, const int exponent = 10) -{ - size_t highest_base = 0; - while(max_input > 0) - { - highest_base++; - max_input /= exponent; - } - - size_t divisor = 1; - - for(size_t i = 0; i < highest_base; i++) - { - counting_sort(vec, divisor, exponent); - divisor *= exponent; - } -} - -int main(int argc, char ** argv) -{ - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - size_t n; - - if(print_input) - cout<<"Array size: "; - - cin>>n; - - vector arr(n); - - if(print_input) - cout<<"Array elements: "; - - size_t max_input = 0; - - for(size_t i = 0; i < n; i++) - { - cin>>arr[i]; - max_input = max(arr[i], max_input); - } - - radix_sort(arr, max_input); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 0; i < n; i++) - cout< -#include -#include -#include -using namespace std; - -size_t random_number(const size_t l, const size_t r){ - - static queue nums; - - if(nums.empty()) - { - random_device rd; - mt19937 mt(rd()); - uniform_int_distribution random_index((int)0, (int)1000000); - for(size_t i = 0; i < 10000; i++) - nums.push(random_index(mt)); - } - - size_t value = nums.front(); - nums.pop(); - return value % (r - l + 1) + l; -} - -template -size_t partition(vector & vec, size_t p, size_t r) -{ - size_t exc = random_number(p, r); - swap(vec[exc], vec[r]); - T x = vec[r]; - size_t i = p - 1; - for(size_t j = p; j < r; j++) - { - if(vec[j] <= x) - { - i++; - swap(vec[i], vec[j]); - } - } - swap(vec[i + 1], vec[r]); - return i + 1; -} - -template -void quick_sort(vector & vec, size_t p = 0, size_t r = 0) -{ - static bool started = false; - - if(!started) - { - started = true; - p = 1; - r = vec.size() - 1; - } - - if(p < r) - { - size_t q = partition(vec, p, r); - quick_sort(vec, p, q - 1); - quick_sort(vec, q + 1, r); - } - - if(p == 0 and r == vec.size() - 1) - started = false; -} - -int main(int argc, char ** argv) -{ - bool print_input = true; - - if(argc > 1 and argv[1][1] == 'v') - print_input = false; - - if(print_input) - cout<<"Array size: "; - - size_t n; - cin>>n; - - vector arr(n + 1); - arr[0] = 0; - - if(print_input) - cout<<"Array elements: "; - - for(size_t i = 1; i <= n; i++) - cin>>arr[i]; - - quick_sort(arr); - - if(print_input) - cout<<"Sorted array: "; - - for(size_t i = 1; i <= n; i++) - cout< -#include -using namespace std; - -template -void Shellsort(vector & vec) -{ - size_t j; - T temp; - - for(size_t aux = vec.size() / 2; aux > 0; aux /= 2) - { - for(size_t i = aux; i < vec.size(); ++i) - { - temp = vec[i]; - - for(j = i; j >= aux and vec[j - aux] > temp; j -= aux) - vec[j] = vec[j - aux]; - - vec[j]=temp; - } - } -} - -int main() -{ - int array_size; - - cout<<"Array size: "; - cin>>array_size; - - vector vec(array_size); - - cout<<"Array elements: "; - - for(int i = 0; i < array_size; i++) - cin>>vec[i]; - - Shellsort(vec); - - cout<<"Sorted array: "; - for(int i = 0; i < array_size; i++) - cout< -using namespace std; -const int RUN = 32; -void insertionSort(int arr[], int left, int right) -{ - for (int i = left + 1; i <= right; i++) - { - int temp = arr[i]; - int j = i - 1; - while (arr[j] > temp && j >= left) - { - arr[j+1] = arr[j]; - j--; - } - arr[j+1] = temp; - } -} -void merge(int arr[], int l, int m, int r) -{ - int len1 = m - l + 1, len2 = r - m; - int left[len1], right[len2]; - for (int i = 0; i < len1; i++) - left[i] = arr[l + i]; - for (int i = 0; i < len2; i++) - right[i] = arr[m + 1 + i]; - - int i = 0; - int j = 0; - while (i < len1 && j < len2) - { - if (left[i] <= right[j]) - { - arr[k] = left[i]; - i++; - } - else - { - arr[k] = right[j]; - j++; - } - k++; - } - - // copy remaining elements of left, if any - while (i < len1) - { - arr[k] = left[i]; - k++; - i++; - } - - // copy remaining element of right, if any - while (j < len2) - { - arr[k] = right[j]; - k++; - j++; - } -} - -// iterative Timsort function to sort the -// array[0...n-1] (similar to merge sort) -void timSort(int arr[], int n) -{ - // Sort individual subarrays of size RUN - for (int i = 0; i < n; i+=RUN) - insertionSort(arr, i, min((i+31), (n-1))); - - // start merging from size RUN (or 32). It will merge - // to form size 64, then 128, 256 and so on .... - for (int size = RUN; size < n; size = 2*size) - { - // pick starting point of left sub array. We - // are going to merge arr[left..left+size-1] - // and arr[left+size, left+2*size-1] - // After every merge, we increase left by 2*size - for (int left = 0; left < n; left += 2*size) - { - // find ending point of left sub array - // mid+1 is starting point of right sub array - int mid = left + size - 1; - int right = min((left + 2*size - 1), (n-1)); - - // merge sub array arr[left.....mid] & - // arr[mid+1....right] - merge(arr, left, mid, right); - } - } -} - -// utility function to print the Array -void printArray(int arr[], int n) -{ - for (int i = 0; i < n; i++) - printf("%d ", arr[i]); - printf("\n"); -} - -// Driver program to test above function -int main() -{ - int arr[] = {5, 21, 7, 23, 19}; - int n = sizeof(arr)/sizeof(arr[0]); - printf("Given Array is\n"); - printArray(arr, n); - - timSort(arr, n); - - printf("After Sorting Array is\n"); - printArray(arr, n); - return 0; -} diff --git a/Sorting/Insertion_Sort.c b/Sorting/Insertion_Sort.c deleted file mode 100644 index 43f5e1b3..00000000 --- a/Sorting/Insertion_Sort.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include - -void insertionSort(int arr[], int n) -{ - int i, key, j; - for (i = 1; i < n; i++) { - key = arr[i]; - j = i - 1; - while (j >= 0 && arr[j] > key) { - arr[j + 1] = arr[j]; - j = j - 1; - } - arr[j + 1] = key; - } -} - -void printArray(int arr[], int n) -{ - int i; - for (i = 0; i < n; i++) - printf("%d ", arr[i]); - printf("\n"); -} - -int main() -{ - int arr[] = { 12, 11, 13, 5, 6 }; - int n = sizeof(arr) / sizeof(arr[0]); - - insertionSort(arr, n); - printArray(arr, n); - - return 0; -} \ No newline at end of file diff --git a/Sorting/Kotlin/KotlinBubleSort b/Sorting/Kotlin/KotlinBubleSort deleted file mode 100644 index ecf22c17..00000000 --- a/Sorting/Kotlin/KotlinBubleSort +++ /dev/null @@ -1,20 +0,0 @@ -fun sort(arr: Array): Array { - for (current in 0 until arr.size) { - for (next in (current + 1) until arr.size) { - if (arr[current] > arr[next]) { - val temp = arr[current] - arr[current] = arr[next] - arr[next] = temp - } - } - } - - return arr -} - -fun main() { - val testCase = arrayOf(5, 3, 4, 2, 1, 10, 9) - sort(testCase).forEach { - print("$it ") - } -} \ No newline at end of file diff --git a/Sorting/Merge_sort.c b/Sorting/Merge_sort.c deleted file mode 100644 index cc33dfd7..00000000 --- a/Sorting/Merge_sort.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include - -#define SIZE 8 - -void merge(int a[], int tmp[], int left, int mid, int right); -void msort(int a[], int tmp[], int left, int right); -void merge_sort(int a[], int tmp[], const int size); -void display(int a[],const int size); - -int main() -{ - int a[SIZE] = {5,6,3,1,7,8,2,4}; - int tmp[SIZE]; - - printf("--- C Merge Sort Demonstration --- \n"); - - printf("Array before sorting:\n"); - display(a,SIZE); - - merge_sort(a, tmp, SIZE); - - printf("Array after sorting:\n"); - display(a,SIZE); - - return 0; -} - -void merge_sort(int a[], int tmp[], const int size) -{ - msort(a, tmp, 0, size - 1); -} - -void msort(int a[], int tmp[], int left, int right) -{ - int mid; - if (right > left) - { - mid = (right + left) / 2; - msort(a, tmp, left, mid); - msort(a, tmp, mid + 1, right); - merge(a, tmp, left, mid + 1, right); - } -} - -void merge(int a[], int tmp[], int left, int mid, int right) -{ - int i, left_end, count, tmp_pos; - left_end = mid - 1; - tmp_pos = left; - count = right - left + 1; - - while ((left <= left_end) && (mid <= right)) - { - if (a[left] <= a[mid]) - { - tmp[tmp_pos] = a[left]; - tmp_pos = tmp_pos + 1; - left = left +1; - } - else - { - tmp[tmp_pos] = a[mid]; - tmp_pos = tmp_pos + 1; - mid = mid + 1; - } - } - - while (left <= left_end) - { - tmp[tmp_pos] = a[left]; - left = left + 1; - tmp_pos = tmp_pos + 1; - } - while (mid <= right) - { - tmp[tmp_pos] = a[mid]; - mid = mid + 1; - tmp_pos = tmp_pos + 1; - } - - for (i = 0; i <= count; i++) - { - a[right] = tmp[right]; - right = right - 1; - } -} - -void display(int a[],const int size) -{ - int i; - for(i = 0; i < size; i++) - printf("%d ",a[i]); - - printf("\n"); -} diff --git a/Sorting/Python/Bubble_Sort.py b/Sorting/Python/Bubble_Sort.py deleted file mode 100644 index 5ac00832..00000000 --- a/Sorting/Python/Bubble_Sort.py +++ /dev/null @@ -1,31 +0,0 @@ -# Bubble Sort -import random - - -def populate(arr, items): - for i in range(items): - arr.append(random.randint(1,items*100)) - return arr - - -def bubbleSort(arr): - for i in range(len(arr)): - swapped = False - for j in range(len(arr) - 1): - if (arr[j] > arr[j + 1]): - temp = arr[j] - arr[j] = arr[j + 1] - arr[j + 1] = temp - swapped = True - if swapped == False: - return arr - - -if __name__ == '__main__': - arr = [] - items = 10 - populate(arr, items) - print('Unsorted: ', arr) - bubbleSort(arr) - print('Sorted: ', arr) - diff --git a/Sorting/Python/Selection_sort.py b/Sorting/Python/Selection_sort.py deleted file mode 100644 index b7c6caf3..00000000 --- a/Sorting/Python/Selection_sort.py +++ /dev/null @@ -1,18 +0,0 @@ -#coding: utf-8; - -def selection_sort(array, indice): - if len(array) - 1 <= 0: - return -1; - - minIndice = indice; - - for i in xrange(indice + 1 , len(array)): - if array[i] < array[minIndice]: - minIndice = i; - - aux = array[indice]; - array[indice] = array[minIndice]; - array[minIndice] = aux; - - selection_sort(array, indice + 1); - return array; diff --git a/Sorting/Python/insertion_sort.py b/Sorting/Python/insertion_sort.py deleted file mode 100644 index 4eb13af8..00000000 --- a/Sorting/Python/insertion_sort.py +++ /dev/null @@ -1,12 +0,0 @@ -#coding: utf-8; - -def insertion_sort(array): - for i in range(1, len(array)): - key = array[i]; - aux = i - 1; - while aux >= 0 and array[aux] > key: - array[aux + 1] = array[aux]; - aux -= 1; - array[aux + 1] = key; - - return array; diff --git a/Sorting/Python/merge_sort.py b/Sorting/Python/merge_sort.py deleted file mode 100644 index be5e5a76..00000000 --- a/Sorting/Python/merge_sort.py +++ /dev/null @@ -1,36 +0,0 @@ -#coding: utf-8 - -def merge_sort(array): - - if len(array) < 2: - return; - - mid = len(array) / 2; - - left = array[:mid]; - right = array[mid:]; - - leftI = 0; - rightI = 0; - arrayI = 0; - - while leftI < len(left) and rightI < len(right): - if left[leftI] < right[rightI]: - array[arrayI] = left[leftI]; - leftI += 1; - else: - array[arrayI] = right[rightI]; - rightI += 1; - - arrayI += 1; - - while leftI < len(left): - array[arrayI] = left[leftI]; - leftI += 1; - arrayI += 1; - - while rightI < len(right): - array[arrayI] = right[rightI]; - rightI += 1; - arrayI += 1; - diff --git a/Sorting/Python/quick_sort.py b/Sorting/Python/quick_sort.py deleted file mode 100644 index d9e65d38..00000000 --- a/Sorting/Python/quick_sort.py +++ /dev/null @@ -1,30 +0,0 @@ -#coding: utf-8; - -def quick(array, init, end): - pivot = array[init]; - - while True: - while array[init] < pivot: - init += 1; - - while array[end] > pivot: - end -= 1; - - if init >= end: - return end; - - swap(array, init, end); - - init += 1; - end -= 1; - -def swap(array, i, j): - array[i], array[j] = array[j], array[i]; - - -def quick_sort(array, init, end): - if init < end: - partition = quick(array, init, end); - quick_sort(array, init, partition); - quick_sort(array, partition + 1, end); - diff --git a/Sorting/Python/selection_sort.py b/Sorting/Python/selection_sort.py deleted file mode 100644 index b7c6caf3..00000000 --- a/Sorting/Python/selection_sort.py +++ /dev/null @@ -1,18 +0,0 @@ -#coding: utf-8; - -def selection_sort(array, indice): - if len(array) - 1 <= 0: - return -1; - - minIndice = indice; - - for i in xrange(indice + 1 , len(array)): - if array[i] < array[minIndice]: - minIndice = i; - - aux = array[indice]; - array[indice] = array[minIndice]; - array[minIndice] = aux; - - selection_sort(array, indice + 1); - return array; diff --git a/Sorting/Quick_sort.cpp b/Sorting/Quick_sort.cpp deleted file mode 100644 index 4b7b3da3..00000000 --- a/Sorting/Quick_sort.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -using namespace std; - -int partition(int arr[],int l,int h) -{ - int pivot=arr[h]; - int i=l-1; - for(int j=l;j>n; - int arr[n+1]; - cout<<"Enter the elements of array\n"; - for(int i=0;i>arr[i]; - } - quick_sort(arr,0,n); - display(arr,n); - return 0; -} diff --git a/Sorting/Radix/radix.c b/Sorting/Radix/radix.c deleted file mode 100644 index d3ccdde0..00000000 --- a/Sorting/Radix/radix.c +++ /dev/null @@ -1,43 +0,0 @@ -#include "radix.h" -#include - -int getMax(int *array, int n){ - int max = array[0]; - for(int i = 1; i < n; i++) - if(array[i] > max) - max = array[i]; - return max -} - -void countSort (int *array, int n, int exp){ - int output[n]; - int i; - int count[10] = {0}; - - // Store count of occurrences in count[] - for (i = 0; i < n; i++) - count[(arr[i] / exp) % 10]++; - - // Change count[i] so that count[i] now contains actual - // position of this digit in output[] - for (i = 1; i < 10; i++) - count[i] += count[i - 1]; - - // Build the output array - for (i = n - 1; i >= 0; i--){ - output[count[(arr[i] / exp) % 10] - 1] = arr[i]; - count[(arr[i] / exp) % 10] --; - } - - // Copy the output array to arr[], so that arr[] now - // contains sorted numbers according to current digit - for (i = 0; i < n; i++) - arr[i] = output[i]; -} - -void radixSort (int *array, int n){ - int max = getMax(array, n); - - for (int exp = 1; m/exp > 0; exp *= 10) - countSort(arr, n, exp); -} diff --git a/Sorting/Radix/radix.h b/Sorting/Radix/radix.h deleted file mode 100644 index 519f3c58..00000000 --- a/Sorting/Radix/radix.h +++ /dev/null @@ -1,8 +0,0 @@ -/* This is a library module supporting Radix Sort for standard ints */ - -/* - *array - pointer to array - n - size of array *array -*/ -void radixSort(int *array, int n); - diff --git a/Sorting/Radix_Sort.cpp b/Sorting/Radix_Sort.cpp deleted file mode 100644 index 3a446729..00000000 --- a/Sorting/Radix_Sort.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//Radix Sort Program in C++ -//Time complexity is O(N*k) where N = num_elements and k = number of digits in maximum number present in input. -//Space complexity if O(N) -/*-------------Radix Sort-------------*/ - -#include -using namespace std; - -int getMaxNum(vector &num_arr) -{ - int max=num_arr[0]; - int size = num_arr.size(); - for(int i=1;imax) - max = num_arr[i]; - } - return max; -} - -void countSort(vector &num_arr, int exp) // Function to sort numbers according to the digit exp -{ - vector result(num_arr.size()); - vector freq(10,0); //Array to count frequency of digits. //Initialised from 0. - - int size = num_arr.size(); //Size of input array. - - for(int i=0;i=0;i--) //Generating the output result array according to the current digit considered. - { - result[freq[ (num_arr[i]/exp)%10 ] - 1] = num_arr[i]; - freq[ (num_arr[i]/exp)%10 ]--; //Decreasing the frequency of the digit once used. - } - - for (int i = 0; i < size; i++) - num_arr[i] = result[i]; - - return; -} - -void radixSort(vector &num_arr) -{ - int max_num; - max_num = getMaxNum(num_arr); //Getting the maximum number out of vector. - - int exp; - for(exp=1;max_num/exp>0;exp*=10) - { - countSort(num_arr,exp); - } - -} - -int main(void) -{ - int num_elements; - cout<<"Enter number of elements: "; - cin>>num_elements; - vector num_arr(num_elements); //Declaring vector of elements. - - for(int i=0;i> num_arr[i]; //Getting the input numbers. - } - - radixSort(num_arr); - - cout<<"The sorted array is: "; - - for(int i=0;i array[i+1] - array[i], array[i+1] = array[i+1], array[i] - swapped = true - end - end - - break if not swapped - end - - array -end - -arr = Array.new - -(0..5).each do |i| - arr.push(rand 100) -end - -p bubble_sort(arr) \ No newline at end of file diff --git a/Sorting/Selection_sort.c b/Sorting/Selection_sort.c deleted file mode 100644 index 89852a5f..00000000 --- a/Sorting/Selection_sort.c +++ /dev/null @@ -1,47 +0,0 @@ -#include - -void swap(int *xp, int *yp) -{ - int temp = *xp; - *xp = *yp; - *yp = temp; -} - -void selectionSort(int arr[], int n) -{ - int i, j, min_idx; - - // One by one move boundary of unsorted subarray - for (i = 0; i < n-1; i++) - { - // Find the minimum element in unsorted array - min_idx = i; - for (j = i+1; j < n; j++) - if (arr[j] < arr[min_idx]) - min_idx = j; - - // Swap the found minimum element with the first element - swap(&arr[min_idx], &arr[i]); - } -} - -/* Function to print an array */ -void printArray(int arr[], int size) -{ - int i; - for (i=0; i < size; i++) - printf("%d ", arr[i]); - printf("\n"); -} - -// Driver program to test above functions -int main() -{ - int arr[] = {64, 25, 12, 22, 11}; - int n = sizeof(arr)/sizeof(arr[0]); - selectionSort(arr, n); - printf("Sorted array: \n"); - printArray(arr, n); - return 0; -} - diff --git a/Sorting/heap-sort.c b/Sorting/heap-sort.c deleted file mode 100644 index e8b22573..00000000 --- a/Sorting/heap-sort.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -int arr[100]; -void heapify(int a) -{ - int b=log(a)/log(2); - printf("a is %d\n",a); - printf("b is %d\n",b); - int i,par,ch,temp,ch1,ch2,mxc; - for(i=pow(2,b)-2;i>-1;i--) - { - par=i; - printf("parent is %d\n",i); - while(par<=a-1) - { - ch1=2*par+1; - ch2=2*par+2; - mxc=ch1; - if(ch1>=a) - arr[ch1]=-999; - if(ch2>=a) - arr[ch2]=-999; - - if(arr[ch2]>arr[mxc]) - mxc=ch2; - - if(arr[mxc] - -void print_array(int array[],int left,int right) -{ - int i; - for (i=left; i <= right; i++) - printf("%d\t", array[i]); - printf("\n"); -} - -void merge(int array[], int left, int mid, int right) -{ - int i, j, k; - int n1 = mid - left + 1; - int n2 = right - mid; - - int Left[n1], Right[n2]; - - /* Copy data to temp arrays L[] and R[] */ - for (i = 0; i < n1; i++) - Left[i] = array[left + i]; - for (j = 0; j < n2; j++) - Right[j] = array[mid + 1+ j]; - - i = 0; // Initial index of first subarray - j = 0; // Initial index of second subarray - k = left; // Initial index of merged subarray - while (i < n1 && j < n2) - { - if (Left[i] <= Right[j]) - array[k++] = Left[i++]; - else - array[k++] = Right[j++]; - } - - /* Copy the remaining elements of L[], if there are any */ - while (i < n1) - array[k++] = Left[i++]; - - /* Copy the remaining elements of R[], if there are any */ - while (j < n2) - array[k++] = Right[j++]; -} - -void mergeSort(int array[], int left, int right) -{ - int i; - if (left < right) - { - int mid = left + (right - left) / 2; - printf("middle element is %d at index %d: \n",array[mid],mid); - // Sort left and right halves - printf("Left half : \n"); - print_array(array,left,mid); - mergeSort(array, left, mid); - printf("Right half : \n"); - print_array(array,mid+1,right); - mergeSort(array, mid+1, right); - - merge(array, left, mid, right); - printf("After merging sorted sub-array : \n"); - print_array(array,left,right); - } -} - - -int main() -{ - int array[] = {24, 17, 13, 22, 19, 21, 16, 12}; - int array_size = sizeof(array)/sizeof(array[0]); - int i; - - printf("Given array is :\n"); - print_array(array,0,array_size-1); - mergeSort(array, 0, array_size - 1); - - printf("\nSorted array is :\n"); - print_array(array,0,array_size-1); - return 0; -} diff --git a/Sorting/pancakesort.py b/Sorting/pancakesort.py deleted file mode 100644 index d2da23d9..00000000 --- a/Sorting/pancakesort.py +++ /dev/null @@ -1,68 +0,0 @@ -# Python3 program to -# sort array using -# pancake sort - -# Reverses arr[0..i] */ -def flip(arr, i): - start = 0 - while start < i: - temp = arr[start] - arr[start] = arr[i] - arr[i] = temp - start += 1 - i -= 1 - -# Returns index of the maximum -# element in arr[0..n-1] */ -def findMax(arr, n): - mi = 0 - for i in range(0,n): - if arr[i] > arr[mi]: - mi = i - return mi - -# The main function that -# sorts given array -# using flip operations -def pancakeSort(arr, n): - - # Start from the complete - # array and one by one - # reduce current size - # by one - curr_size = n - while curr_size > 1: - # Find index of the maximum - # element in - # arr[0..curr_size-1] - mi = findMax(arr, curr_size) - - # Move the maximum element - # to end of current array - # if it's not already at - # the end - if mi != curr_size-1: - # To move at the end, - # first move maximum - # number to beginning - flip(arr, mi) - - # Now move the maximum - # number to end by - # reversing current array - flip(arr, curr_size-1) - curr_size -= 1 - -# A utility function to -# print an array of size n -def printArray(arr, n): - for i in range(0,n): - print ("%d"%( arr[i]),end=" ") - -# Driver program -arr = [23, 10, 20, 11, 12, 6, 7] -n = len(arr) -pancakeSort(arr, n); -print ("Sorted Array ") -printArray(arr,n) - diff --git a/Sorting/quick_sort.c b/Sorting/quick_sort.c deleted file mode 100644 index 6d8a2920..00000000 --- a/Sorting/quick_sort.c +++ /dev/null @@ -1,63 +0,0 @@ -#include - -void printArray(int array[], int size) -{ - int i; - for (i=0; i < size; i++) - printf("%d\t", array[i]); - printf("\n"); -} - -void swap(int* a, int* b) -{ - int t = *a; - *a = *b; - *b = t; -} - -int partition (int array[], int low, int high) -{ - int pivot = array[high]; - int i = (low - 1); - int j; - - for (j = low; j <= high- 1; j++) - { - if (array[j] <= pivot) - { - i++; - swap(&array[i], &array[j]); - } - } - swap(&array[i + 1], &array[high]); - return (i + 1); -} - - -void quickSort(int array[], int low, int high) -{ - if (low < high) - { - int pivot_index; - pivot_index = partition(array, low, high); - printf("Pivot element is %d \n",array[pivot_index]); - printf("Array after pivot partitioning : \n"); - printArray(array,8); - - - quickSort(array, low, pivot_index - 1); - quickSort(array, pivot_index + 1, high); - } -} -int main() -{ - int array[] = {17, 13, 20, 16, 19, 24, 22, 21}; - int n = sizeof(array)/sizeof(array[0]); - printf("Given array: \n"); - printArray(array, n); - quickSort(array, 0, n-1); - printf("Sorted array: \n"); - printArray(array, n); - return 0; -} - diff --git a/Sorting/quick_sort.py b/Sorting/quick_sort.py deleted file mode 100644 index 44a163bb..00000000 --- a/Sorting/quick_sort.py +++ /dev/null @@ -1,83 +0,0 @@ -class QuickSorter(object): - - def __init__(self,array): - """ - Initialize QuickSorter with an array of numbers that should be sorted - """ - self.list = [] - self.replace_list(array) - - def replace_list(self, array): - if isinstance(array, list): - for i in array: - if not (isinstance(i,int) or isinstance(i, float)): - raise ValueError("all elements must be type number") - else: - raise AttributeError("search array must be list type") - - self.sorted = False - self.list = array - - - def __quicksort(self, low, high): - size = high - low + 1 - stack = [0] * (size) - - top = -1 - - top = top + 1 - stack[top] = low - top = top + 1 - stack[top] = high - - while top >= 0: - - high = stack[top] - top = top - 1 - low = stack[top] - top = top - 1 - - partition = self.__partition( low, high ) - - if partition-1 > low: - top = top + 1 - stack[top] = low - top = top + 1 - stack[top] = partition - 1 - - if partition+1 < high: - top = top + 1 - stack[top] = partition + 1 - top = top + 1 - stack[top] = high - - def __partition(self,low,high): - i = ( low - 1 ) - x = self.list[high] - - for j in range(low , high): - if self.list[j] <= x: - i = i+1 - self.list[i],self.list[j] = self.list[j],self.list[i] - - self.list[i+1],self.list[high] = self.list[high],self.list[i+1] - return (i+1) - - - def sort(self): - """ - Executing Hoare partition scheme quick sort algorithm, iterativly - """ - self.__quicksort( 0, len(self.list) - 1 ) - self.sorted = True - - - - def result(self): - """ - Return the sorted list, and sort before if not already sorted - """ - if not self.sorted: - self.sort() - - return self.list diff --git a/Sorting/quicksort.hs.txt b/Sorting/quicksort.hs.txt deleted file mode 100644 index c4e4abbe..00000000 --- a/Sorting/quicksort.hs.txt +++ /dev/null @@ -1,18 +0,0 @@ -import Data.List --- simple code of quicksort in haskell --- its easy - - -quicksort :: [Int] -> (Int -> Int -> Bool) -> [Int] -quicksort [] _ = [] -quicksort (x:xs) comparator = (quicksort lessthenhead (comparator)) ++ [x] ++ (quicksort biggerthenhead (comparator) ) - where - lessthenhead = filter (comparator x) xs - biggerthenhead = (xs \\ lessthenhead) - -main = do - unsortedList <- readLn :: IO [Int] - let ascending = quicksort unsortedList (<) - let descending = quicksort unsortedList (>) - print ascending - print descending \ No newline at end of file diff --git a/Sorting/zombiesort.c b/Sorting/zombiesort.c deleted file mode 100644 index 8d861ff0..00000000 --- a/Sorting/zombiesort.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -int main() -{ - int size; - printf("Enter the number of creature :"); - scanf("%d",&size); - int arr[size],even[size],evenlist=0,evensum=0,odd[size],oddlist=0,oddsum=0,key,j,smallest; - printf("Enter the power and list:"); - for(int m=0;m=0 && odd[j]>key) - { - odd[j+1]=odd[j]; - j--; - odd[j+1]=key; - } - } - for(int i=1;i<=sevenlist;i++) - { - key=even[i]; - j=i-1; - while(j>=0 && even[j]>key) - { - even[j+1]=even[j]; - j--; - even[j+1]=key; - } - } - for(int k=0;kH1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0>(list:MutableList) { - - var items: MutableList = list - - - fun isEmpty():Boolean = this.items.isEmpty() - - fun count():Int = this.items.count() - - fun push(element:T) { - val position = this.count() - this.items.add(position, element) - } - - override fun toString() = this.items.toString() - - fun pop():T? { - if (this.isEmpty()) { - return null - } else { - val item = this.items.count() - 1 - return this.items.removeAt(item) - } - } - - fun peek():T? { - if (isEmpty()) { - return null - } else { - return this.items[this.items.count() - 1] - } - } - -} \ No newline at end of file diff --git a/Stack/Stack_using_arrays.cpp b/Stack/Stack_using_arrays.cpp deleted file mode 100644 index a6837cd0..00000000 --- a/Stack/Stack_using_arrays.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include - -void push(); -void pop(); -void dis(); - -int top=-1,ar[10],n=10; - -void main() -{ - int ch; - - do{ - cout<<"SELECT AN OPTION : \n\n"; - cout<<"1. ENTER AN ELEMENT\n"; - cout<<"2. DELETE AN ELEMENT\n"; - cout<<"3. DISPLAY THE ELEMENTS\n"; - cout<<"4. EXIT\n"; - cin>>ch; - - switch(ch) - { - case 1 : {push(); - break;} - case 2 : {pop(); - break;} - case 3 : {dis(); - break;} - case 4 : break; - default : {cout<<"WRONG OPTION!!\n"; - break;} - } - }while(ch!=4); -} - -void push() -{ - if(top >= n-1) - { - cout<<"Stack Overflow.\n"; - } - else - { - top++; - cout<<"Enter the element : "; - cin>>ar[top]; - } -} - -void pop() -{ - if(top <= -1) - { - cout<<"Stack Underflow.\n"; - } - else - { - cout<<"Element deleted: "<=0) - { - cout<<"Elements are :\n"; - for(int i=top;i>=0;i--) - { - cout<postfix and infix->prefix conversion).c b/Stack/stack application(infix->postfix and infix->prefix conversion).c deleted file mode 100644 index d9523299..00000000 --- a/Stack/stack application(infix->postfix and infix->prefix conversion).c +++ /dev/null @@ -1,277 +0,0 @@ -#include -#include -#include -#include -#define MAX 40 -typedef struct{ - char ele[MAX]; - int top; -}stack; -void reverse(char ex[]); -void infixtopost(char exp[],stack s); -int check(char exp[],stack s); -void infixtoprefix(char exp[],stack s); - -char pop(stack *s); -void push(stack *s,char item); -char peek(stack s); -int isEmpty(stack *s); -int isFull(stack *s); -void deletion(stack s); -void display(stack s); -int prec2(char ch); -int prec1(char ch); -void reverse(char exp[],stack s); -char post[MAX]; -int main(){ - stack s; - s.top=-1; - do{ - int ch; - char exp[MAX]; - - printf("\n\nMenue\n\n\nEnter 1 for infix to postfix\n\n\nEnter 2 for infix to prefix\n"); - printf("\n\nEnter your choice\n\n"); - scanf("%d",&ch); - switch(ch){ - case 1: - printf("\nEnter the expression to be evaluated\n"); - scanf("%s",exp); - if(check(exp,s)) - - infixtopost(exp,s); - else{ - printf("\n\nThe entered expression is invalid enter some valid expression\n\n"); - } - - break; - - case 2: - printf("\nEnter the expression to be evaluated\n"); - scanf("\n%s",exp); - if(check(exp,s)){ - - infixtoprefix(exp,s); - - } - else{ - printf("\n\nThe entered expression is invalid enter some valid expression\n\n"); - } - break; - case 3: - printf("\n\nBye!Bye you exit\n\n"); - exit(0); - - default: - printf("\n\nWrong Choice\n\n"); - - } - }while(1); -} -int check(char exp[],stack s){ - - int i,k; - k=strlen(exp); - for(i=0;exp[i]!='\0';i++) - { - - if(exp[i]=='(') - push(&s,exp[i]); - else if(exp[i]==')') - { - if(s.top==-1) - break; - else - pop(&s); - } - - } - if(s.top==-1&& i==k) - return 1; - else - return 0; - - - } - -void reverse(char ex[]){ - int i,n,end; - char temp; - n=strlen(ex); - end=n-1; - for(i=0;itop++; - s->ele[s->top]=item; - - } -} -char pop(stack *s){ - char item; - if(isEmpty(s)){ - printf("\nStack Underflow......\n"); - return -1; - - } - else{ - item=s->ele[s->top]; - s->top--; - return item; - } -} -char peek(stack s){ - char item; - if(isEmpty(&s)){ - printf("\nStack nderflow\n"); - return -1; - } - else - { - item=s.ele[s.top]; - return item; - } - } - -int isEmpty(stack *s) -{ - if(s->top==-1) - { - return 1; - } - else{ - return 0; - } -} -int isFull(stack *s) -{ - if(s->top==MAX) - { - return 1; - } - else{ - return 0; - } -} - - - - - diff --git a/Stack/stack.c b/Stack/stack.c deleted file mode 100644 index 268242a6..00000000 --- a/Stack/stack.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -int top=-1; - -void push(int s[],int n,int x){ - if(top=0;i--){ -printf("\n| %4d |",s[i]); - } - printf("\n--------------\n"); -} - - -int main(){ -int n,x; -printf("enter size of stack : "); -scanf("%d",&n); - -int s[n]; -int choise; -printf("\n\n ------------------------------------------------------\n"); -printf("choise what do u whant\n"); -printf("1. push \n2. pop \n3. disply \n4. exit\n"); -printf("------------------------------------------------------\n"); - -pick : - -printf("enter your choise : "); -scanf("%d",&choise); - -switch(choise){ -case 1: - printf("enter number you want to add in stack :"); - scanf("%d",&x); - push(s,n,x); - -break; - -case 2: - printf("you poped : %d\n", pop(s,n)); -break; - -case 3: - display(s); -break; - -case 4: - exit(0); -} - -goto pick; -return 0; -} diff --git a/Stack/stack.cpp b/Stack/stack.cpp deleted file mode 100644 index e1ca9a94..00000000 --- a/Stack/stack.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include - -using namespace std; - -template -class stack { -private: - vector items; - int size; - -public: - void push(T); - T pop(); - int getSize(); - T top(); -}; - -template -void stack::push(T item) { - items.push_back(item); - size++; -} - -template -T stack::pop() { - if (size == 0) { - throw "No items to pop"; - } - else { - T temp = items[size - 1]; - items.pop_back(); - size--; - return temp; - } -} - -template -int stack::getSize() { - return size; -} - -template -T stack::top() { - return items[size - 1]; -} \ No newline at end of file diff --git a/Stack/stack.java b/Stack/stack.java deleted file mode 100644 index d3936000..00000000 --- a/Stack/stack.java +++ /dev/null @@ -1,52 +0,0 @@ -import java.util.EmptyStackException; -import java.util.Iterator; -import java.util.LinkedList; - -public class Stack implements Iterable { - - private LinkedList list = new java.util.LinkedList (); - - // Create an empty stack - public Stack() { } - - // Create a Stack with an initial element - public Stack(T firstElem) { - push(firstElem); - } - - // Return the number of elements in the stack - public int size() { - return list.size(); - } - - // Check if the stack is empty - public boolean isEmpty() { - return size() == 0; - } - - // Push an element on the stack - public void push(T elem) { - list.addLast(elem); - } - - // Pop an element off the stack - // Throws an error is the stack empty - public T pop() { - if (isEmpty()) - throw new EmptyStackException(); - return list.removeLast(); - } - - // Peek the top of the stack without removing an element - // Throws an exception if the stack is empty - public T peek() { - if (isEmpty()) - throw new EmptyStackException(); - return list.peekLast(); - } - - // Allow users to iterate through the stack using an iterator - @Override public Iterator iterator () { - return list.iterator(); - } -} diff --git a/Stack/stack.js b/Stack/stack.js deleted file mode 100644 index ae5d25d9..00000000 --- a/Stack/stack.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Implementation of stack with an array - */ - -class Stack { - constructor() { - this.stack = []; - } - - // Insert an element on top of the stack - push(element) { - this.stack.push(element); - } - - //Removes the element at the top of the stack and returns that same element - pop() { - if (this.isEmpty()) - return 'Stack is empty!'; - return this.stack.pop(); - } - - // Returns the element that is on top of the stack - peek() { - if (this.isEmpty()) - return 'Stack is empty'; - return this.stack[this.stack.length - 1]; - } - - // helper method - isEmpty() { - return !this.stack.length; - } -} \ No newline at end of file diff --git a/Stack/stack.py b/Stack/stack.py deleted file mode 100644 index 43c84361..00000000 --- a/Stack/stack.py +++ /dev/null @@ -1,24 +0,0 @@ -class Stack(object): - - def __init__(self,size): - self.index = -1 - self.stack = [None] * size - - def push(self, value): - if self.index != len(self.stack) -1: - self.index = self.index + 1 - self.stack[self.index] = value - - def pop(self): - if not self.empty(): - value = self.stack[self.index] - self.stack[self.index] = None - self.index = self.index - 1 - return value - - def peek(self): - if not self.empty(): - return self.stack[self.index] - - def empty(self): - return self.index == -1 \ No newline at end of file diff --git a/Stack/stack_generic.cpp b/Stack/stack_generic.cpp deleted file mode 100644 index 7e1ac7f6..00000000 --- a/Stack/stack_generic.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include -using namespace std; - -//Node class used as building block for Stack Class/Object -template -class Node{ - T data; - Node* next; - public: - Node(T num){ - data = num; - next = NULL; - } - T getData(){ - return data; - } - Node* getNext(){ - return next; - } - void setData(T num){ - data = num; - } - void setNext(Node* temp){ - next = temp; - } -}; -template -class Stack{ - Node* head; - public: - Stack(){ - head = NULL; - } - void push(T data){ - if(head == NULL){ - head = new Node(data); - return; - } - Node* temp = new Node(data); - temp->setNext(head); - head = temp; - } - void pop(){ - if(isEmpty()) - return; - Node* temp = head; - head = head->getNext(); - delete temp; - } - T top(){ - return head->getData(); - } - bool isEmpty(){ - return (head == NULL)?true:false; - } - void print(){ - Node* temp = head; - while(temp != NULL){ - cout<getData()<<" "; - temp = temp->getNext(); - } - } -}; -bool balanced(string str){ - Stack s; - for(int i=0; i>str; - (balanced(str))?cout<<"Balanced":cout<<"Not Balanced"; - cout<<"\nDo you want to try again?(y/n) "; - cin>>choice; - }while(choice != 'n'); - return 0; -} diff --git a/Tower_Of_Hanoi/Tower_Of_Hanoi.c b/Tower_Of_Hanoi/Tower_Of_Hanoi.c deleted file mode 100644 index 8b35f877..00000000 --- a/Tower_Of_Hanoi/Tower_Of_Hanoi.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -void towers(int, char, char, char); -int main() - -{ - int num; - printf("Enter the number of disks : "); - scanf("%d", &num); - towers(num, 'A', 'C', 'B'); - return 0; -} - -void towers(int num, char from, char to, char aux) - -{ if (num == 1) - { - printf("\n Move disk 1 from %c to %c", from, to); - return; - } - towers(num - 1, from, aux, to); - printf("\n Move disk %d from %c to %c", num, from, to); - towers(num - 1, aux, to, from); -} diff --git a/Tower_Of_Hanoi/Tower_Of_Hanoi_Output.txt b/Tower_Of_Hanoi/Tower_Of_Hanoi_Output.txt deleted file mode 100644 index 5f263374..00000000 --- a/Tower_Of_Hanoi/Tower_Of_Hanoi_Output.txt +++ /dev/null @@ -1,20 +0,0 @@ -Enter the number of disks : 4 - - Move disk 1 from A to B - Move disk 2 from A to C - Move disk 1 from B to C - Move disk 3 from A to B - Move disk 1 from C to A - Move disk 2 from C to B - Move disk 1 from A to B - Move disk 4 from A to C - Move disk 1 from B to C - Move disk 2 from B to A - Move disk 1 from C to A - Move disk 3 from B to C - Move disk 1 from A to B - Move disk 2 from A to C - Move disk 1 from B to C -Process returned 0 (0x0) execution time : 1.964 s -Press any key to continue. - diff --git a/Tower_Of_Hanoi/Tower_of_Hanoi.js b/Tower_Of_Hanoi/Tower_of_Hanoi.js deleted file mode 100644 index c626f1b2..00000000 --- a/Tower_Of_Hanoi/Tower_of_Hanoi.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -function stepsToSolveHanoiT(height, srcP, desP, bufferP) { - if (height >= 1) { - - // Move a tower of height-1 to the buffer peg, using the destination peg. - stepsToSolveHanoiT(height - 1, srcP, bufferP, desP); - - // Move the remaining disk to the destination peg. - console.log('Move disk from Tower ', srcP, ' to Tower ', desP); - - // Move the tower of `height-1` from the `buffer peg` to the `destination peg` using the `source peg`. - stepsToSolveHanoiT(height - 1, bufferP, desP, srcP); - } - - return; -} - -stepsToSolveHanoiT(3, "A", "C", "B"); \ No newline at end of file diff --git a/Tower_Of_Hanoi/Towers of Hanoi.cpp b/Tower_Of_Hanoi/Towers of Hanoi.cpp deleted file mode 100644 index 98c4c1b1..00000000 --- a/Tower_Of_Hanoi/Towers of Hanoi.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -using namespace std; -void towerOfHanoi(int n, char from_rod, char to_rod, char aux_rod) -{ - if (n == 1) - { - cout << "Move disk 1 from rod " << from_rod << " to rod " << to_rod<>n; - towerOfHanoi(n, 'A', 'C', 'B'); - return 0; -} - - diff --git a/Tower_Of_Hanoi/towerofhanoi.py b/Tower_Of_Hanoi/towerofhanoi.py deleted file mode 100644 index 2227249e..00000000 --- a/Tower_Of_Hanoi/towerofhanoi.py +++ /dev/null @@ -1,9 +0,0 @@ -def TowerOfHanoi(n , from_rod, to_rod, aux_rod): - if n == 1: - print "Move disk 1 from rod",from_rod,"to rod",to_rod - return - TowerOfHanoi(n-1, from_rod, aux_rod, to_rod) - print "Move disk",n,"from rod",from_rod,"to rod",to_rod - TowerOfHanoi(n-1, aux_rod, to_rod, from_rod) - - diff --git a/b-tree/b-tree.py b/b-tree/b-tree.py deleted file mode 100644 index 7d739fa4..00000000 --- a/b-tree/b-tree.py +++ /dev/null @@ -1,101 +0,0 @@ -class BTreeNode(object): - """A B-Tree Node. - - attributes - ===================== - leaf : boolean, determines whether this node is a leaf. - keys : list, a list of keys internal to this node - c : list, a list of children of this node - """ - def __init__(self, leaf=False): - self.leaf = leaf - self.keys = [] - self.c = [] - - def __str__(self): - if self.leaf: - return "Leaf BTreeNode with " + len(self.keys) + "keys:\n\t"+ self.keys +"\n\tChildren:" + self.c + "\n" - else: - return "Internal BTreeNode with " + len(self.keys) + "keys:\n\t"+ self.keys +"\n\tChildren:" + self.c + "\n" - - -class BTree(object): - def __init__(self, t): - self.root = BTreeNode(leaf=True) - self.t = t - - def search(self, k, x=None): - """Search the B-Tree for the key k. - - args - ===================== - k : Key to search for - x : (optional) Node at which to begin search. Can be None, in which case the entire tree is searched. - - """ - if isinstance(x, BTreeNode): - i = 0 - while i < len(x.keys) and k > x.keys[i]: # look for index of k - i += 1 - if i < len(x.keys) and k == x.keys[i]: # found exact match - return (x, i) - elif x.leaf: # no match in keys, and is leaf ==> no match exists - return None - else: # search children - return self.search(k, x.c[i]) - else: # no node provided, search root of tree - return self.search(k, self.root) - - def insert(self, k): - r = self.root - if len(r.keys) == (2*self.t) - 1: # keys are full, so we must split - s = BTreeNode() - self.root = s - s.c.insert(0, r) # former root is now 0th child of new root s - self._split_child(s, 0) - self._insert_nonfull(s, k) - else: - self._insert_nonfull(r, k) - - def _insert_nonfull(self, x, k): - i = len(x.keys) - 1 - if x.leaf: - # insert a key - x.keys.append(0) - while i >= 0 and k < x.keys[i]: - x.keys[i+1] = x.keys[i] - i -= 1 - x.keys[i+1] = k - else: - # insert a child - while i >= 0 and k < x.keys[i]: - i -= 1 - i += 1 - if len(x.c[i].keys) == (2*self.t) - 1: - self._split_child(x, i) - if k > x.keys[i]: - i += 1 - self._insert_nonfull(x.c[i], k) - - def _split_child(self, x, i): - t = self.t - y = x.c[i] - z = BTreeNode(leaf=y.leaf) - - # slide all children of x to the right and insert z at i+1. - x.c.insert(i+1, z) - x.keys.insert(i, y.keys[t-1]) - - # keys of z are t to 2t - 1, - # y is then 0 to t-2 - z.keys = y.keys[t:(2*t - 1)] - y.keys = y.keys[0:(t-1)] - - # children of z are t to 2t els of y.c - if not y.leaf: - z.c = y.c[t:(2*t)] - y.c = y.c[0:(t-1)] - - def __str__(self): - r = self.root - return r.__str__() + '\n'.join([child.__str__() for child in r.c]) \ No newline at end of file diff --git a/bubble-sort/bubble.c b/bubble-sort/bubble.c deleted file mode 100644 index 8de68738..00000000 --- a/bubble-sort/bubble.c +++ /dev/null @@ -1,58 +0,0 @@ -#include - -long array[100005]; - -void bubbleSort(long n) // Defining 'bubble sort' function. -{ - long i, j, t; - - for (i = 0 ; i< n - 1; i++) - { - for (j = 0 ; j< n - i - 1; j++) - { - if (array[j] > array[j+1]) { - - t=array[j]; // Swapping index j and j+1 - array[j]=array[j+1]; - array[j+1]=t; - } - } - } - - return; -} - -int main() -{ - long n, i; - - printf(" *\n"); - printf(" ***\n"); - printf(" ******\n"); - printf(" **********\n"); - printf(" ***************\n"); - printf(" SORTING ALGORITHM!!\n\n"); - - printf("Enter number of elements you want to sort:\n"); - scanf("%ld", &n); printf("\n"); - - if (n>100000) { - printf("Please enter number less than 10⁵ and start again.\n"); - return 0; - } - - printf("Now please input %ld integers:\n", n); - - for (i= 0; i< n; i++) - scanf("%ld", &array[i]); - - bubbleSort(n); - - printf("\nHere is your sorted list in ascending order:\n"); - - for (i=0; i< n; i++) - printf("%ld ", array[i]); - printf("\n\n This list was sorted using Bubble Sort technique.\n\n"); - - return 0; -} \ No newline at end of file diff --git a/bubble-sort/sample1.txt b/bubble-sort/sample1.txt deleted file mode 100644 index 737f011f..00000000 --- a/bubble-sort/sample1.txt +++ /dev/null @@ -1,11 +0,0 @@ - * - *** - ****** - ********** - *************** - SORTING ALGORITHM!! - -Enter number of elements you want to sort: -1000000 - -Please enter number less than 10⁵. diff --git a/bubble-sort/sample2.txt b/bubble-sort/sample2.txt deleted file mode 100644 index 13fb1bde..00000000 --- a/bubble-sort/sample2.txt +++ /dev/null @@ -1,17 +0,0 @@ - * - *** - ****** - ********** - *************** - SORTING ALGORITHM!! - -Enter number of elements you want to sort: - -Now please input 7 integers: -823 31 -1023 7 -523 39148 231 - -Here is your sorted list in ascending order: --1023 -523 7 31 231 823 39148 - - This list was sorted using Bubble Sort technique. - diff --git a/c++/Searching/BinarySearch.cpp b/c++/Searching/BinarySearch.cpp deleted file mode 100644 index 15806c50..00000000 --- a/c++/Searching/BinarySearch.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -typedef long long int ll; -using namespace std; - -int bin_search(int l,int h,int key,vector a,bool searchIndex){ - int mid,result = -1; - while(l<=h){ - mid = ceil((l+h)/2); - if(key==a[mid]){ - result = mid; - if(searchIndex) - h = mid-1; - else - l = mid+1; - } - else if(keya[mid]){ - l=mid+1; - } - } - return result; -} - - - -int main() -{ - vector a; - int ele,l,n,h,key,res; - cin>>n; - cin>>key; - - for (int i=0;i>ele; - a.push_back(ele); - } - l = a[0]; - h = a[n-1]; - - int firstIndex = bin_search(l,h,key,a,true); - if(firstIndex==-1){ - cout<<0< -using namespace std; - -int search(int arr[], int n, int x) -{ - int i; - for (i = 0; i < n; i++) - if (arr[i] == x) - return i; - return -1; -} - -int main(void) -{ - int arr[] = { 2, 3, 4, 10, 40 }; - int x = 10; - int n = sizeof(arr) / sizeof(arr[0]); - int result = search(arr, n, x); -(result == -1)? cout<<"Element is not present in array" - : cout<<"Element is present at index " <a) - a=-1;//not possible - else - a=getsum(b,ans,a); - System.out.print(a); - - } - public static int getsum(int b,int ans[],int a) - { - int sol=0; - while(b!=0) - { - System.out.println("we added "+ ans[b-1]); - sol+=ans[b-1]; - b=b-(b&(-b)); - }return sol; - } -} diff --git a/libqueue_in_c/Makefile b/libqueue_in_c/Makefile deleted file mode 100644 index 06f9e75f..00000000 --- a/libqueue_in_c/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# -# @file: Makefile -# - -SRC_FILE = queue.c -SRC_TEST_FILE = queue_test.c - -OBJ_FILE = queue.o -OBJ_TEST_FILE = queue_test.o -TEST_EXEC = qtest - -CC = gcc -RM = rm -rf - -CFLAGS = -c -Wall - -all: clean lib - -lib: - $(CC) $(CFLAGS) -o $(OBJ_FILE) $(SRC_FILE) -test: - $(CC) $(CFLAGS) -o $(OBJ_TEST_FILE) $(SRC_TEST_FILE) - $(CC) -o $(TEST_EXEC) $(OBJ_FILE) $(OBJ_TEST_FILE) -clean: - $(RM) $(OBJ_FILE) $(OBJ_TEST_FILE) $(TEST_EXEC) - diff --git a/libqueue_in_c/queue.c b/libqueue_in_c/queue.c deleted file mode 100644 index 3cc02ef2..00000000 --- a/libqueue_in_c/queue.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * @file: queue.c - */ - -#include -#include -#include -#include - -#include "queue.h" - -struct node { - void *data; - struct node *next; -}; - -struct Queue { - int length; - struct node *head; - struct node *tail; -}; - -/* allocates memory for node and initialize it */ -static struct node *createnode(void *data) -{ - struct node *entry; - - entry = (struct node *)malloc(sizeof(struct node)); - if(entry == NULL) { - fprintf(stderr, "failed to allocate memory\n"); - return NULL; - } - - entry->data = data; - entry->next = NULL; - - return entry; -} - -/* push data to queue tail */ -int queue_push_tail(struct Queue *queue, void *data) -{ - struct node *entry; - - if(queue == NULL) - return -1; - - entry = createnode(data); - if(entry == NULL) { - return -ENOMEM; - } - - /* For empty queue */ - if(queue->head == NULL) - queue->head = entry; - else - queue->tail->next = entry; - queue->tail = entry; - - queue->length++; - return 0; -} - -/* removes head and return its data */ -void *queue_pop_head(struct Queue *queue) -{ - void *data; - struct node *entry; - - if(queue == NULL || queue->length == 0) - return NULL; - - if(queue->head == NULL) { - return NULL; - } - - entry = queue->head; - queue->head = queue->head->next; - data = entry->data; - queue->length--; - free(entry); - - return data; -} - -int queue_get_length(struct Queue *queue) -{ - if (queue == NULL) - return 0; - - return queue->length; -} - -struct Queue *queue_new() -{ - struct Queue *queue; - - queue = (struct Queue *)malloc(sizeof(struct Queue)); - if(queue == NULL) { - fprintf(stderr, "failed to allocate memory\n"); - return NULL; - } - - queue->length = 0; - queue->head = NULL; - queue->tail = NULL; - - return queue; -} - -void queue_destroy(struct Queue *queue, QueueDataFreeFunc function) -{ - struct node *tmp; - - if(queue == NULL || queue->length == 0) - goto cleanup; - - if(queue->head == NULL) - free(queue); - else { - tmp = queue->head; - while(queue->head != NULL) { - tmp = queue->head->next; - if (function != NULL) - function(queue->head->data); - free(queue->head); - queue->head=tmp; - } - } - -cleanup: - free(queue); -} - diff --git a/libqueue_in_c/queue.h b/libqueue_in_c/queue.h deleted file mode 100644 index 67882896..00000000 --- a/libqueue_in_c/queue.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * @file: queue.h - */ - -#ifndef __QUEUE_H -#define __QUEUE_H - -struct Queue; - -typedef void (* QueueDataFreeFunc)(void *data); - -extern struct Queue *queue_new(); -extern void queue_destroy(struct Queue *queue, QueueDataFreeFunc function); - -extern int queue_push_tail(struct Queue *queue, void *data); -extern void *queue_pop_head(struct Queue *queue); -extern int queue_get_length(struct Queue *queue); - -#endif diff --git a/libqueue_in_c/queue_test.c b/libqueue_in_c/queue_test.c deleted file mode 100644 index adacf108..00000000 --- a/libqueue_in_c/queue_test.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * @file: queue_test.c - */ - -#include -#include -#include - -#include "queue.h" - -void print_len(struct Queue *q) -{ - printf("%d\n", queue_get_length(q)); -} - -int main(int argc, char **argv) -{ - struct Queue *strings = queue_new(); - - queue_push_tail(strings, strdup("hello")); - print_len(strings); - queue_push_tail(strings, strdup("world")); - print_len(strings); - queue_push_tail(strings, strdup("in")); - print_len(strings); - queue_push_tail(strings, strdup("C")); - print_len(strings); - - char *str = queue_pop_head(strings); - printf("%s\n", str); - free(str); - - print_len(strings); - str = queue_pop_head(strings); - printf("%s\n", str); - free(str); - - queue_destroy(strings, free); - -// print_len(strings); -// str = queue_pop_head(strings); -// printf("%s\n", str); -// free(str); -// -// print_len(strings); -// str = queue_pop_head(strings); -// printf("%s\n", str); -// free(str); -// -// print_len(strings); -// str = queue_pop_head(strings); -// if (str) { -// printf("%s\n", str); -// free(str); -// } -// print_len(strings); - - return 0; -} diff --git a/libqueue_in_c/readme b/libqueue_in_c/readme deleted file mode 100644 index 6dae742a..00000000 --- a/libqueue_in_c/readme +++ /dev/null @@ -1,3 +0,0 @@ -# Queue implementation in C -* Build the library using `make` command. -* To test library use `make test` and run `qtest` binary diff --git a/matrix-multiplication/matrixmult.c b/matrix-multiplication/matrixmult.c deleted file mode 100644 index ac49d73f..00000000 --- a/matrix-multiplication/matrixmult.c +++ /dev/null @@ -1,56 +0,0 @@ -#include - -int main() -{ - int m, n, p, q, c, d, k, sum = 0; - int first[10][10], second[10][10], multiply[10][10]; - - printf("\nEnter number of rows and columns of first matrix:\n"); - scanf("%d%d", &m, &n); - - printf("Enter number of rows and columns of second matrix:\n"); - scanf("%d%d", &p, &q); - - if (n != p) { - printf("The matrices can't be multiplied with each other.\n"); - return 0; - } - - printf("\n"); - - printf("Enter elements of first matrix:\n"); - - for (c = 0; c < m; c++) - for (d = 0; d < n; d++) - scanf("%d", &first[c][d]); - - printf("\n"); - - printf("Enter elements of second matrix:\n"); - - for (c = 0; c < p; c++) - for (d = 0; d < q; d++) - scanf("%d", &second[c][d]); - - for (c = 0; c < m; c++) { - for (d = 0; d < q; d++) { - for (k = 0; k < p; k++) { - sum = sum + first[c][k]*second[k][d]; - } - - multiply[c][d] = sum; - sum = 0; - } - } - - printf("\nProduct of the matrices:\n"); - - for (c = 0; c < m; c++) { - for (d = 0; d < q; d++) - printf("%d\t", multiply[c][d]); - - printf("\n"); - } - - return 0; -} \ No newline at end of file diff --git a/matrix-multiplication/sample1.txt b/matrix-multiplication/sample1.txt deleted file mode 100644 index 0efb5c35..00000000 --- a/matrix-multiplication/sample1.txt +++ /dev/null @@ -1,5 +0,0 @@ -Enter number of rows and columns of first matrix: -3 5 -Enter number of rows and columns of second matrix: -4 6 -The matrices can't be multiplied with each other. diff --git a/matrix-multiplication/sample2.txt b/matrix-multiplication/sample2.txt deleted file mode 100644 index 3b717c04..00000000 --- a/matrix-multiplication/sample2.txt +++ /dev/null @@ -1,20 +0,0 @@ -Enter number of rows and columns of first matrix: -3 4 -Enter number of rows and columns of second matrix: -4 4 - -Enter elements of first matrix: -1 7 2 2 -6 3 0 8 -9 5 4 7 - -Enter elements of second matrix: -1 0 0 0 -0 1 0 0 -0 0 1 0 -0 0 0 1 - -Product of the matrices: -1 7 2 2 -6 3 0 8 -9 5 4 7 diff --git a/power/power.cpp b/power/power.cpp deleted file mode 100644 index ce6ba10e..00000000 --- a/power/power.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -using namespace std; -long long power(long long a,int n){ - if(n==0) - return 1; - if((n%2)==0) - return power(a*a,n/2); - else - return a*power(a*a,n/2); -} -int main(){ - long long a; - int n; - cout<<"Enter the value of a"<>a; - cout<<"Enter the value of the power"<<"\n"; - cin>>n; - cout<<"The value of "<>>>>>> -REVERSE -<<<<<<< - -Enter the sentence to be reversed : -This is a sample input string - -string input sample a is This - - End of Program :) - diff --git a/reverse-sentences/reverse.c b/reverse-sentences/reverse.c deleted file mode 100644 index d3765f71..00000000 --- a/reverse-sentences/reverse.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -int main() { - - printf("\n"); - printf(">>>>>>>\n"); - printf("REVERSE\n"); // opening - printf("<<<<<<<\n\n"); - printf("Enter the sentence to be reversed :\n"); - - char str[100005]; - scanf("%[^\n]s",str); - // To scan the whole sentence - - int i, l = strlen(str); - printf("\n"); - - for (i=l-1;i>=0;i--) { - - if (str[i]==' ') { - printf("%s ",&str[i+1]); // Print the last word before the next NULL - str[i] = '\0'; // Settint the last space to a NULL - } - - } - - printf("%s\n",str); // Printing the first word - printf("\n End of Program :)\n\n"); // Closing - - return 0; -} \ No newline at end of file diff --git a/reverse-sentences/reverse.py b/reverse-sentences/reverse.py deleted file mode 100644 index 1970549f..00000000 --- a/reverse-sentences/reverse.py +++ /dev/null @@ -1,3 +0,0 @@ -input_str = input('Enter input string: ') -input_str = ' '.join(input_str.split(' ')[::-1]) -print ('Reverse of input string: ', input_str) \ No newline at end of file diff --git a/searching/Go/BinarySearch.go b/searching/Go/BinarySearch.go deleted file mode 100644 index af1e4e86..00000000 --- a/searching/Go/BinarySearch.go +++ /dev/null @@ -1,36 +0,0 @@ - -package main -import "fmt" - -func binarySearch(below int, up []int) bool { - - low := 0 - high := len(up) - 1 - - for low <= high{ - median := (low + high) / 2 - - if up[median] < below { - low = median + 1 - }else{ - high = median - 1 - } - } - - if low == len(up) || up[low] != below { - return false - } - - return true -} - -func main(){ - items := []int{3, 15, 21, 36, 46, 67, 93, 110} - var searchKey = 21 - if (binarySearch(searchKey, items) == true){ - fmt.Println(searchKey,"is available in the array") - }else{ - fmt.Println(searchKey,"isn't available in the array") - } - -} \ No newline at end of file diff --git a/searching/Sublist Search.cpp b/searching/Sublist Search.cpp deleted file mode 100644 index 7ea8235b..00000000 --- a/searching/Sublist Search.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// C++ program to find if a list is present in another list -#include -using namespace std; - -// A Linked List node -struct Node -{ - int data; // To store Data - Node* next; -}; - -// Returns true if first list is present in second -// list -bool findList(Node* first, Node* second) -{ - Node* ptr1 = first, *ptr2 = second; - - // To return true if both linked lists are empty - if (first == NULL && second == NULL) - return true; - - // To return false if one list is empty and other list is not empty - if ( first == NULL || - (first != NULL && second == NULL)) - return false; - - // To traverse the second list one by one - while (second != NULL) - { - // Initialize ptr2 with value of current node of second - ptr2 = second; - - // Matching first list with second list - while (ptr1 != NULL) - { - // If second list becomes empty and first not then return false - if (ptr2 == NULL) - return false; - - // If data part is same, go to next of both lists - else if (ptr1->data == ptr2->data) - { - ptr1 = ptr1->next; - ptr2 = ptr2->next; - } - // If not equal then break the loop - else break; - } - - // Return true if first list gets traversed completely that means it is matched. - if (ptr1 == NULL) - return true; - - // Initialize ptr1 with first again - ptr1 = first; - - // And go to next node of second list - second = second->next; - } - - return false; -} - -// function to print all nodes of the list -void printList(Node* node) -{ - while (node != NULL) - { - printf("%d ", node->data); - node = node->next; - } -} - -// Function to add new node to linked lists -Node *newNode(int key) -{ - Node *temp = new Node; - temp-> data= key; - temp->next = NULL; - return temp; -} - -/* Driver program to test above functions*/ -int main() -{ - /* Let us create two linked lists to test - the above functions. Created lists shall be - a: 1->2->3->4 - b: 1->2->1->2->3->4*/ - Node *a = newNode(1); - a->next = newNode(2); - a->next->next = newNode(3); - a->next->next->next = newNode(4); - - Node *b = newNode(1); - b->next = newNode(2); - b->next->next = newNode(1); - b->next->next->next = newNode(2); - b->next->next->next->next = newNode(3); - b->next->next->next->next->next = newNode(4); - - findList(a,b) ? cout << "LIST FOUND" : cout << "LIST NOT FOUND"; - - return 0; -} \ No newline at end of file diff --git a/searching/a.out b/searching/a.out deleted file mode 100755 index 3128aecdeeaf5b6f10c68c5efcbce175301136aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15736 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 -using namespace std; -int binarySearch(int arr[],int low,int high,int elem) -{ - int mid; - if(low<=high) - { - mid=low+(high-low)/2; -// cout<elem) - return binarySearch(arr,low,mid-1,elem); - else - return binarySearch(arr,mid+1,high,elem); - } - return -1; -} -int main() -{ - //Provided array is sorted else we will have to use sort function. - int n,elem; - cout<<"Enter the size of the array:\n"; - cin>>n; - int arr[n+1]; - cout<<"Enter the elements of array:\n"; - for(int i=0;i>arr[i]; - - cout<<"Enter the elements to be searched:\n"; - cin>>elem; -// sort(arr,arr+n); - int index=binarySearch(arr,0,n-1,elem); - - if(index == -1) - { - cout<<"Element is not present in the given array!\n"; - } - else - { - cout<<"Element is present at index "< -using namespace std; - -int interpolationSearch(int arr[], int n, int x) -{ - - int lo = 0, hi = (n - 1); - - - while (lo <= hi && x >= arr[lo] && x <= arr[hi]) - { - if (lo == hi) - { - if (arr[lo] == x) return lo; - return -1; - } - - int pos = lo + (((double)(hi - lo) / - (arr[hi] - arr[lo])) * (x - arr[lo])); - - - if (arr[pos] == x) - return pos; - - if (arr[pos] < x) - lo = pos + 1; - - - else - hi = pos - 1; - } - return -1; -} - - -int main() -{ - int n,elem; - cout<<"Enter the size of the array:\n"; - cin>>n; - int * arr = new int[n+1]; - cout<<"Enter the elements of array:\n"; - for(int i=0;i>arr[i]; - - cout<<"Enter the elements to be searched:\n"; - cin>>elem; - - int index=interpolation_search(arr,n,elem); - - if(index == -1) - { - cout<<"Element is not present in the given array!\n"; - } - else - { - cout<<"Element is present at index "< -using namespace std; -int linear_search(int arr[],int n,int elem) -{ - for(int i=0;i>n; - int arr[n+1]; - cout<<"Enter the elements of array:\n"; - for(int i=0;i>arr[i]; - - cout<<"Enter the elements to be searched:\n"; - cin>>elem; - - int index=linear_search(arr,n,elem); - - if(index == -1) - { - cout<<"Element is not present in the given array!\n"; - } - else - { - cout<<"Element is present at index "<R or rR or l>r: - return None - if L>=l and R<=r: - return self.segment[i] - val1 = self.__query(2*i+1,L,int((L+R)/2),l,r) - val2 = self.__query(2*i+2,int((L+R+2)/2),R,l,r) - print(L,R," returned ",val1,val2) - if val1 != None: - if val2 != None: - return self.fn(val1,val2) - return val1 - return val2 - - - def query(self,L,R): - return self.__query(0,0,len(self.arr)-1,L,R) - -''' -Example - -mytree = SegmentTree([2,4,5,3,4],max) -mytree.query(2,4) -mytree.query(0,3) ... -mytree = SegmentTree([4,5,2,3,4,43,3],sum) -mytree.query(1,8) -... -''' diff --git a/singly linked in C/Singly_linked.c b/singly linked in C/Singly_linked.c deleted file mode 100644 index fb612a60..00000000 --- a/singly linked in C/Singly_linked.c +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include -void randominsert(int); -void create(int); -struct node -{ - int data; - struct node *next; -}; -struct node *head; -void main () -{ - int choice,item,loc; - do - { - printf("nEnter the item which you want to insert?n"); - scanf("%d",&item); - if(head == NULL) - { - create(item); - } - else - { - randominsert(item); - } - printf("nPress 0 to insert more ?n"); - scanf("%d",&choice); - }while(choice == 0); -} -void create(int item) -{ - - struct node *ptr = (struct node *)malloc(sizeof(struct node *)); - if(ptr == NULL) - { - printf("nOVERFLOWn"); - } - else - { - ptr->data = item; - ptr->next = head; - head = ptr; - printf("nNode insertedn"); - } -} -void randominsert(int item) - { - struct node *ptr = (struct node *) malloc (sizeof(struct node)); - struct node *temp; - int i,loc; - if(ptr == NULL) - { - printf("nOVERFLOW"); - } - else - { - - printf("Enter the location"); - scanf("%d",&loc); - ptr->data = item; - temp=head; - for(i=0;inext; - if(temp == NULL) - { - printf("ncan't insertn"); - return; - } - - } - ptr ->next = temp ->next; - temp ->next = ptr; - printf("nNode inserted"); - } - - } diff --git a/trie/trie.dart b/trie/trie.dart deleted file mode 100644 index 73fa5ce4..00000000 --- a/trie/trie.dart +++ /dev/null @@ -1,123 +0,0 @@ -final int asize=26; - -trieNode root=trieNode(); - -void main(){ - insert('abcdefg'); - insert('eminem'); - insert('a'); - insert('samyak'); - insert('example'); - insert('exam'); - insert('am'); - insert('vora'); - insert('axe'); -// print(search('am')); - List letters=['a','e','x','m','p','l']; -// getPossbleWordsFromCharacters(letters); - autoSuggestion('a'); -} - - class trieNode{ - bool end=false; - List children=new List(asize); -} - - -void insert(String name){ - int length=name.length; - trieNode crawl=root;//initially start to crawl from the root - - for(int height=0;height letters){ - //prepare a list to check availability of characters - List hash=List(asize);//true or null - - for(int i=0;i hash,String name){ -// Case if the word is a subset of another word - if(spy.end) - print(name); - -// else traverse every node and check if it forms a word ahead - for(int index=0;index Date: Fri, 9 Oct 2020 23:24:08 +0530 Subject: [PATCH 2/2] Added Some of the Searching Data Structures --- Binary_Search.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ Linear_Search.c | 49 +++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 Binary_Search.c create mode 100644 Linear_Search.c diff --git a/Binary_Search.c b/Binary_Search.c new file mode 100644 index 00000000..65fb4f02 --- /dev/null +++ b/Binary_Search.c @@ -0,0 +1,90 @@ +#include +#include + +void binarySearch(int searchValue, int a[], int n); + +void selectionSort(int a[], int n) +{ + int i, j, minimunIndex, temp; + + printf("Just started to sort Using the Selection Sort Algorithm\n"); + + for ( i = 0; i < n; i++) + { + minimunIndex = i; + + for ( j = i + 1; j < n; j++) + { + if (a[minimunIndex] > a[j]) + minimunIndex = j; + } + temp = a[i]; + a[i] = a[minimunIndex]; + a[minimunIndex] = temp; + } + + printf("Ended Sorting using Selection Sort\n"); +} + + +void main() +{ + int length, i, searchValue; + printf("Welcome to the Binary Search!!\n"); + printf("You can search the data element from an array, don't worry I will do it for you\n"); + printf("For simplicity here the data elements are considered as integers\n"); + printf("So let me know how many integers you want:\n"); + scanf("%d", &length); + + int *a = (int *) calloc (length, sizeof(int)); + + printf("Please enter the integers now:\n"); + for ( i = 0; i < length; i++) + { + scanf("%d", &a[i]); + } + + printf("Please enter the value you want me to search for:\n"); + scanf("%d", &searchValue); + + // Binary Search needs the sorted array as input without which the search can't occur + // Hence sorting elements before the Search + selectionSort(a, length); + + binarySearch(searchValue, a, length); + + printf("Thanks for Investing time in Me!!"); +} + +void binarySearch(int searchValue, int a[], int n) +{ + int middle, first, last; + first = 0; + last = n-1; + + middle = first + last / 2; + + printf("Starting to search the Data element --> %4d\n", searchValue); + while( first <= last) + { + if(a[middle] < searchValue) + first = middle + 1; + + else if(a[middle] == searchValue) + { + printf("The element %d was found at the location %d starting from 0\n", searchValue, middle); + break; + } + else + last = middle - 1; + + middle = first + last / 2; + } + + if (first > last) + { + printf("Sorry the element you wanted me to Search doesn't exist in the given array\n"); + } + + printf("Just Ended Binary Search\n"); +} \ No newline at end of file diff --git a/Linear_Search.c b/Linear_Search.c new file mode 100644 index 00000000..6fb6390a --- /dev/null +++ b/Linear_Search.c @@ -0,0 +1,49 @@ +#include +#include +void linearSearch(int searchValue, int a[], int n); + +void main() +{ + int length, j, searchValue; + printf("Welcome to Linear Search!!\n"); + printf("You can search a data element from an array\n"); + printf("For Simplicity lets start with the data elements as integers.\n"); + printf("Please enter the length of the array you want me to create:\n"); + scanf("%d", &length); + + int *a = (int *) calloc (length, sizeof(int)); + + printf("Now you can enter the integers of your choice:\n"); + for(j = 0; j < length; j++) + { + scanf("%d", &a[j]); + } + + printf("Now Please enter the value you want me to search\n"); + scanf("%d", &searchValue); + + linearSearch(searchValue, a, length); + + printf("Thanks For investing time in Me!!"); +} + +void linearSearch(int searchValue, int a[], int n) +{ + int i; + printf("I have just started to search for the Value --> %4d\n", searchValue); + + for ( i = 0; i < n; i++) + { + if (a[i] == searchValue) + { + printf("Here you go the element %d is found at %d location from the starting from 0\n",searchValue, i); + break; + } + } + + if ( i == n) + { + printf("Sorry, the element you wanted me to found doesn't exist in the given array.\n"); + } + printf("The Linear Search has Ended\n"); +} \ No newline at end of file

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 ru}na_Dm= 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