|
462 | 462 | ]
|
463 | 463 | },
|
464 | 464 | {
|
465 |
| - "cell_type": "code", |
466 |
| - "execution_count": 36, |
467 |
| - "id": "38abc1ec-d1c5-4002-ac83-ca9dd318433d", |
| 465 | + "cell_type": "markdown", |
| 466 | + "id": "30ac3e92-b786-4954-9db4-bdd786c28822", |
468 | 467 | "metadata": {},
|
469 |
| - "outputs": [], |
470 | 468 | "source": [
|
471 |
| - "#Implement hash table collision handling using linear probing" |
| 469 | + "# Implement hash table collision handling using linear probing" |
472 | 470 | ]
|
473 | 471 | },
|
474 | 472 | {
|
|
681 | 679 | },
|
682 | 680 | {
|
683 | 681 | "cell_type": "code",
|
684 |
| - "execution_count": null, |
| 682 | + "execution_count": 85, |
685 | 683 | "id": "bddee77e-9c11-47f6-aa9f-a344a61305d7",
|
686 | 684 | "metadata": {},
|
687 | 685 | "outputs": [],
|
688 |
| - "source": [] |
| 686 | + "source": [ |
| 687 | + "class HashTableLP:\n", |
| 688 | + " def __init__(self, num_of_rows):\n", |
| 689 | + " self.num_of_rows = num_of_rows\n", |
| 690 | + " self.arr = [None for _ in range(self.num_of_rows)]\n", |
| 691 | + " \n", |
| 692 | + " def get_hash(self, key):\n", |
| 693 | + " sum_h = 0\n", |
| 694 | + " for el in key:\n", |
| 695 | + " sum_h += ord(el)\n", |
| 696 | + " mod = sum_h % self.num_of_rows\n", |
| 697 | + " return mod \n", |
| 698 | + " \n", |
| 699 | + " def __getitem__(self, key):\n", |
| 700 | + " h = self.get_hash(key)\n", |
| 701 | + " if self.arr[h][0] == key:\n", |
| 702 | + " return self.arr[h][1]\n", |
| 703 | + " else:\n", |
| 704 | + " while self.arr[h][0] != key:\n", |
| 705 | + " h += 1\n", |
| 706 | + " h %= self.num_of_rows\n", |
| 707 | + " return self.arr[h][1] \n", |
| 708 | + " \n", |
| 709 | + " def __setitem__(self, key, value):\n", |
| 710 | + " h = self.get_hash(key)\n", |
| 711 | + " if self.arr[h] is None:\n", |
| 712 | + " self.arr[h] = (key, value)\n", |
| 713 | + " else:\n", |
| 714 | + " while self.arr[h] is not None:\n", |
| 715 | + " h += 1\n", |
| 716 | + " h %= self.num_of_rows\n", |
| 717 | + " self.arr[h] = (key, value) \n", |
| 718 | + " \n", |
| 719 | + " def __delitem__(self, key):\n", |
| 720 | + " h = self.get_hash(key)\n", |
| 721 | + " if self.arr[h][0] == key:\n", |
| 722 | + " del self.arr[h]\n", |
| 723 | + " else:\n", |
| 724 | + " while self.arr[h][0] != key:\n", |
| 725 | + " h += 1\n", |
| 726 | + " h %= self.num_of_rows\n", |
| 727 | + " del self.arr[h]" |
| 728 | + ] |
| 729 | + }, |
| 730 | + { |
| 731 | + "cell_type": "code", |
| 732 | + "execution_count": 86, |
| 733 | + "id": "48dc4747-5393-480d-9d70-ae0f0ea0b6ae", |
| 734 | + "metadata": {}, |
| 735 | + "outputs": [], |
| 736 | + "source": [ |
| 737 | + "htlp = HashTableLP(10)" |
| 738 | + ] |
| 739 | + }, |
| 740 | + { |
| 741 | + "cell_type": "code", |
| 742 | + "execution_count": 87, |
| 743 | + "id": "8d04333a-3c8b-474c-b2e9-6cf7955eb263", |
| 744 | + "metadata": {}, |
| 745 | + "outputs": [], |
| 746 | + "source": [ |
| 747 | + "htlp[\"march 6\"] = 120\n", |
| 748 | + "htlp[\"march 8\"] = 67\n", |
| 749 | + "htlp[\"march 9\"] = 4\n", |
| 750 | + "htlp[\"march 17\"] = 459" |
| 751 | + ] |
| 752 | + }, |
| 753 | + { |
| 754 | + "cell_type": "code", |
| 755 | + "execution_count": 89, |
| 756 | + "id": "95b5f8f7-36ef-479e-82db-f5befcea4933", |
| 757 | + "metadata": {}, |
| 758 | + "outputs": [ |
| 759 | + { |
| 760 | + "data": { |
| 761 | + "text/plain": [ |
| 762 | + "9" |
| 763 | + ] |
| 764 | + }, |
| 765 | + "execution_count": 89, |
| 766 | + "metadata": {}, |
| 767 | + "output_type": "execute_result" |
| 768 | + } |
| 769 | + ], |
| 770 | + "source": [ |
| 771 | + "htlp.get_hash(\"march 6\")" |
| 772 | + ] |
| 773 | + }, |
| 774 | + { |
| 775 | + "cell_type": "code", |
| 776 | + "execution_count": 90, |
| 777 | + "id": "cc705fae-bcf6-4908-b686-639baa43e098", |
| 778 | + "metadata": {}, |
| 779 | + "outputs": [ |
| 780 | + { |
| 781 | + "data": { |
| 782 | + "text/plain": [ |
| 783 | + "9" |
| 784 | + ] |
| 785 | + }, |
| 786 | + "execution_count": 90, |
| 787 | + "metadata": {}, |
| 788 | + "output_type": "execute_result" |
| 789 | + } |
| 790 | + ], |
| 791 | + "source": [ |
| 792 | + "htlp.get_hash(\"march 17\")" |
| 793 | + ] |
| 794 | + }, |
| 795 | + { |
| 796 | + "cell_type": "code", |
| 797 | + "execution_count": 88, |
| 798 | + "id": "f92b0165-f200-4f1f-bd2d-0750595e1206", |
| 799 | + "metadata": {}, |
| 800 | + "outputs": [ |
| 801 | + { |
| 802 | + "data": { |
| 803 | + "text/plain": [ |
| 804 | + "[('march 17', 459),\n", |
| 805 | + " ('march 8', 67),\n", |
| 806 | + " ('march 9', 4),\n", |
| 807 | + " None,\n", |
| 808 | + " None,\n", |
| 809 | + " None,\n", |
| 810 | + " None,\n", |
| 811 | + " None,\n", |
| 812 | + " None,\n", |
| 813 | + " ('march 6', 120)]" |
| 814 | + ] |
| 815 | + }, |
| 816 | + "execution_count": 88, |
| 817 | + "metadata": {}, |
| 818 | + "output_type": "execute_result" |
| 819 | + } |
| 820 | + ], |
| 821 | + "source": [ |
| 822 | + "htlp.arr" |
| 823 | + ] |
| 824 | + }, |
| 825 | + { |
| 826 | + "cell_type": "code", |
| 827 | + "execution_count": 92, |
| 828 | + "id": "e11ed292-8a92-44f9-899c-a9b670653849", |
| 829 | + "metadata": {}, |
| 830 | + "outputs": [ |
| 831 | + { |
| 832 | + "data": { |
| 833 | + "text/plain": [ |
| 834 | + "4" |
| 835 | + ] |
| 836 | + }, |
| 837 | + "execution_count": 92, |
| 838 | + "metadata": {}, |
| 839 | + "output_type": "execute_result" |
| 840 | + } |
| 841 | + ], |
| 842 | + "source": [ |
| 843 | + "htlp[\"march 9\"]" |
| 844 | + ] |
| 845 | + }, |
| 846 | + { |
| 847 | + "cell_type": "code", |
| 848 | + "execution_count": 93, |
| 849 | + "id": "57ab0444-dd72-4964-b60c-e833190f3733", |
| 850 | + "metadata": {}, |
| 851 | + "outputs": [], |
| 852 | + "source": [ |
| 853 | + "del htlp[\"march 8\"]" |
| 854 | + ] |
| 855 | + }, |
| 856 | + { |
| 857 | + "cell_type": "code", |
| 858 | + "execution_count": 94, |
| 859 | + "id": "6d3d67c4-536a-47aa-854f-45235b67ea67", |
| 860 | + "metadata": {}, |
| 861 | + "outputs": [ |
| 862 | + { |
| 863 | + "data": { |
| 864 | + "text/plain": [ |
| 865 | + "[('march 17', 459),\n", |
| 866 | + " ('march 9', 4),\n", |
| 867 | + " None,\n", |
| 868 | + " None,\n", |
| 869 | + " None,\n", |
| 870 | + " None,\n", |
| 871 | + " None,\n", |
| 872 | + " None,\n", |
| 873 | + " ('march 6', 120)]" |
| 874 | + ] |
| 875 | + }, |
| 876 | + "execution_count": 94, |
| 877 | + "metadata": {}, |
| 878 | + "output_type": "execute_result" |
| 879 | + } |
| 880 | + ], |
| 881 | + "source": [ |
| 882 | + "htlp.arr" |
| 883 | + ] |
689 | 884 | }
|
690 | 885 | ],
|
691 | 886 | "metadata": {
|
|
0 commit comments