├── 2022数据结构与算法B ├── sessdsa-textbook.pdf ├── 数据文件 │ ├── 10.1.1.56.4899-开放定址算法分析.pdf │ ├── 2004-199-MD5散列冲突论文.pdf │ ├── Film.json.zip │ ├── PythonDSExamplePrograms.zip │ ├── fourletterwords.txt │ └── pi50.4.bin ├── 数据结构与算法-W01.pdf ├── 数据结构与算法-W02.pdf ├── 数据结构与算法-W03.pdf ├── 数据结构与算法-W04.pdf ├── 数据结构与算法-W05.pdf ├── 数据结构与算法-W06.pdf ├── 数据结构与算法-W07(清明假期).pdf ├── 数据结构与算法-W08.pdf ├── 数据结构与算法-W09.pdf ├── 数据结构与算法-W10.pdf ├── 数据结构与算法-W11(五一假期).pdf ├── 数据结构与算法-W12.pdf └── 数据结构与算法-W13.pdf ├── PythonDSExamplePrograms ├── Chapter1 │ ├── fraction.py │ └── logicgates.py ├── Chapter3 │ ├── baseconverter.py │ ├── hotpotato.py │ ├── infixtopostfix.py │ ├── orderedlist.py │ ├── palindromechecker.py │ ├── parcheckers.py │ ├── printersimulation.py │ ├── stacktest.py │ └── unorderedlist.py ├── Chapter4 │ ├── makingchange.py │ ├── maze.py │ ├── maze2.txt │ ├── recursiveconversion.py │ ├── recursivelistsummation.py │ ├── recursivespiral.py │ ├── recursivetree.py │ ├── recursivetriangle.py │ └── towerofhanoi.py ├── Chapter5 │ ├── binarysearch.py │ ├── binarysearchrecursive.py │ ├── bubblesort.py │ ├── hashing.py │ ├── insertionsort.py │ ├── mergesort.py │ ├── orderedsequentialsearch.py │ ├── quicksort.py │ ├── selectionsort.py │ ├── sequentialsearch.py │ └── shellsort.py ├── Chapter6 │ ├── balancedbst.py │ ├── binarytreelist.py │ ├── binarytreenoderef.py │ ├── binheap.py │ ├── binsearchtree.py │ ├── binsearchtree2.py │ ├── heapexample1.py │ ├── parsetree.py │ └── treeexample.py └── Chapter7 │ ├── depthfirstsearch.py │ ├── fourletterwords.txt │ ├── graphimpl.py │ ├── rawwords.txt │ ├── wordladder.py │ └── wordproc.py ├── Python数据结构与算法分析(第2版).pdf ├── README.md └── pythonds ├── __init__.py ├── __pycache__ └── __init__.cpython-32.pyc ├── basic ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-32.pyc │ ├── queue.cpython-32.pyc │ └── stack.cpython-32.pyc ├── deque.py ├── queue.py └── stack.py ├── graphs ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-32.pyc │ ├── adjGraph.cpython-32.pyc │ └── priorityQueue.cpython-32.pyc ├── adjGraph.py └── priorityQueue.py └── trees ├── __init__.py ├── __pycache__ ├── __init__.cpython-32.pyc ├── balance.cpython-32.pyc ├── binheap.cpython-32.pyc └── bst.cpython-32.pyc ├── balance.py ├── binaryTree.py ├── binheap.py ├── bst.py └── bst.pyc /2022数据结构与算法B/sessdsa-textbook.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/sessdsa-textbook.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/10.1.1.56.4899-开放定址算法分析.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据文件/10.1.1.56.4899-开放定址算法分析.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/2004-199-MD5散列冲突论文.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据文件/2004-199-MD5散列冲突论文.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/Film.json.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据文件/Film.json.zip -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/PythonDSExamplePrograms.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据文件/PythonDSExamplePrograms.zip -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/fourletterwords.txt: -------------------------------------------------------------------------------- 1 | AAHS 2 | AALS 3 | ABAS 4 | ABBA 5 | ABBE 6 | ABED 7 | ABET 8 | ABLE 9 | ABLY 10 | ABOS 11 | ABRI 12 | ABUT 13 | ABYE 14 | ABYS 15 | ACED 16 | ACES 17 | ACHE 18 | ACHY 19 | ACID 20 | ACME 21 | ACNE 22 | ACRE 23 | ACTA 24 | ACTS 25 | ACYL 26 | ADDS 27 | ADIT 28 | ADOS 29 | ADZE 30 | AEON 31 | AERO 32 | AERY 33 | AFAR 34 | AGAR 35 | AGAS 36 | AGED 37 | AGEE 38 | AGER 39 | AGES 40 | AGHA 41 | AGIN 42 | AGIO 43 | AGLY 44 | AGMA 45 | AGOG 46 | AGON 47 | AGUE 48 | AHEM 49 | AHOY 50 | AIDE 51 | AIDS 52 | AILS 53 | AIMS 54 | AINS 55 | AIRN 56 | AIRS 57 | AIRT 58 | AIRY 59 | AITS 60 | AJAR 61 | AJEE 62 | AKEE 63 | AKIN 64 | ALAE 65 | ALAN 66 | ALAR 67 | ALAS 68 | ALBA 69 | ALBS 70 | ALEC 71 | ALEE 72 | ALEF 73 | ALES 74 | ALFA 75 | ALGA 76 | ALIF 77 | ALIT 78 | ALKY 79 | ALLS 80 | ALLY 81 | ALMA 82 | ALME 83 | ALMS 84 | ALOE 85 | ALOW 86 | ALPS 87 | ALSO 88 | ALTO 89 | ALTS 90 | ALUM 91 | AMAH 92 | AMAS 93 | AMBO 94 | AMEN 95 | AMIA 96 | AMID 97 | AMIE 98 | AMIN 99 | AMIR 100 | AMIS 101 | AMMO 102 | AMOK 103 | AMPS 104 | AMUS 105 | AMYL 106 | ANAL 107 | ANAS 108 | ANDS 109 | ANES 110 | ANEW 111 | ANGA 112 | ANIL 113 | ANIS 114 | ANKH 115 | ANNA 116 | ANOA 117 | ANON 118 | ANSA 119 | ANTA 120 | ANTE 121 | ANTI 122 | ANTS 123 | ANUS 124 | APED 125 | APER 126 | APES 127 | APEX 128 | APOD 129 | APSE 130 | AQUA 131 | ARAK 132 | ARBS 133 | ARCH 134 | ARCO 135 | ARCS 136 | AREA 137 | ARES 138 | ARFS 139 | ARIA 140 | ARID 141 | ARIL 142 | ARKS 143 | ARMS 144 | ARMY 145 | ARSE 146 | ARTS 147 | ARTY 148 | ARUM 149 | ARVO 150 | ARYL 151 | ASCI 152 | ASEA 153 | ASHY 154 | ASKS 155 | ASPS 156 | ATAP 157 | ATES 158 | ATMA 159 | ATOM 160 | ATOP 161 | AUKS 162 | AULD 163 | AUNT 164 | AURA 165 | AUTO 166 | AVER 167 | AVES 168 | AVID 169 | AVOS 170 | AVOW 171 | AWAY 172 | AWED 173 | AWEE 174 | AWES 175 | AWLS 176 | AWNS 177 | AWNY 178 | AWOL 179 | AWRY 180 | AXAL 181 | AXED 182 | AXEL 183 | AXES 184 | AXIL 185 | AXIS 186 | AXLE 187 | AXON 188 | AYAH 189 | AYES 190 | AYIN 191 | AZAN 192 | AZON 193 | BAAL 194 | BAAS 195 | BABA 196 | BABE 197 | BABU 198 | BABY 199 | BACH 200 | BACK 201 | BADE 202 | BADS 203 | BAFF 204 | BAGS 205 | BAHT 206 | BAIL 207 | BAIT 208 | BAKE 209 | BALD 210 | BALE 211 | BALK 212 | BALL 213 | BALM 214 | BALS 215 | BAMS 216 | BAND 217 | BANE 218 | BANG 219 | BANI 220 | BANK 221 | BANS 222 | BAPS 223 | BARB 224 | BARD 225 | BARE 226 | BARF 227 | BARK 228 | BARM 229 | BARN 230 | BARS 231 | BASE 232 | BASH 233 | BASK 234 | BASS 235 | BAST 236 | BATE 237 | BATH 238 | BATS 239 | BATT 240 | BAUD 241 | BAWD 242 | BAWL 243 | BAYS 244 | BEAD 245 | BEAK 246 | BEAM 247 | BEAN 248 | BEAR 249 | BEAT 250 | BEAU 251 | BECK 252 | BEDS 253 | BEDU 254 | BEEF 255 | BEEN 256 | BEEP 257 | BEER 258 | BEES 259 | BEET 260 | BEGS 261 | BELL 262 | BELS 263 | BELT 264 | BEMA 265 | BEND 266 | BENE 267 | BENS 268 | BENT 269 | BERG 270 | BERM 271 | BEST 272 | BETA 273 | BETH 274 | BETS 275 | BEVY 276 | BEYS 277 | BHUT 278 | BIAS 279 | BIBB 280 | BIBS 281 | BICE 282 | BIDE 283 | BIDS 284 | BIER 285 | BIFF 286 | BIGS 287 | BIKE 288 | BILE 289 | BILK 290 | BILL 291 | BIMA 292 | BIND 293 | BINE 294 | BINS 295 | BINT 296 | BIOS 297 | BIRD 298 | BIRK 299 | BIRL 300 | BIRR 301 | BISE 302 | BISK 303 | BITE 304 | BITS 305 | BITT 306 | BIZE 307 | BLAB 308 | BLAE 309 | BLAH 310 | BLAM 311 | BLAT 312 | BLAW 313 | BLEB 314 | BLED 315 | BLET 316 | BLEW 317 | BLIN 318 | BLIP 319 | BLOB 320 | BLOC 321 | BLOT 322 | BLOW 323 | BLUB 324 | BLUE 325 | BLUR 326 | BOAR 327 | BOAS 328 | BOAT 329 | BOBS 330 | BOCK 331 | BODE 332 | BODS 333 | BODY 334 | BOFF 335 | BOGS 336 | BOGY 337 | BOIL 338 | BOLA 339 | BOLD 340 | BOLE 341 | BOLL 342 | BOLO 343 | BOLT 344 | BOMB 345 | BOND 346 | BONE 347 | BONG 348 | BONK 349 | BONY 350 | BOOB 351 | BOOK 352 | BOOM 353 | BOON 354 | BOOR 355 | BOOS 356 | BOOT 357 | BOPS 358 | BORA 359 | BORE 360 | BORN 361 | BORT 362 | BOSH 363 | BOSK 364 | BOSS 365 | BOTA 366 | BOTH 367 | BOTS 368 | BOTT 369 | BOUT 370 | BOWL 371 | BOWS 372 | BOXY 373 | BOYO 374 | BOYS 375 | BOZO 376 | BRAD 377 | BRAE 378 | BRAG 379 | BRAN 380 | BRAS 381 | BRAT 382 | BRAW 383 | BRAY 384 | BRED 385 | BREE 386 | BREN 387 | BREW 388 | BRIE 389 | BRIG 390 | BRIM 391 | BRIN 392 | BRIO 393 | BRIS 394 | BRIT 395 | BROO 396 | BROS 397 | BROW 398 | BRRR 399 | BRUT 400 | BUBO 401 | BUBS 402 | BUCK 403 | BUDS 404 | BUFF 405 | BUGS 406 | BUHL 407 | BUHR 408 | BULB 409 | BULK 410 | BULL 411 | BUMF 412 | BUMP 413 | BUMS 414 | BUND 415 | BUNG 416 | BUNK 417 | BUNN 418 | BUNS 419 | BUNT 420 | BUOY 421 | BURA 422 | BURD 423 | BURG 424 | BURL 425 | BURN 426 | BURP 427 | BURR 428 | BURS 429 | BURY 430 | BUSH 431 | BUSK 432 | BUSS 433 | BUST 434 | BUSY 435 | BUTE 436 | BUTS 437 | BUTT 438 | BUYS 439 | BUZZ 440 | BYES 441 | BYRE 442 | BYRL 443 | BYTE 444 | CABS 445 | CACA 446 | CADE 447 | CADI 448 | CADS 449 | CAFE 450 | CAFF 451 | CAGE 452 | CAGY 453 | CAID 454 | CAIN 455 | CAKE 456 | CAKY 457 | CALF 458 | CALK 459 | CALL 460 | CALM 461 | CALO 462 | CALX 463 | CAME 464 | CAMP 465 | CAMS 466 | CANE 467 | CANS 468 | CANT 469 | CAPE 470 | CAPH 471 | CAPO 472 | CAPS 473 | CARB 474 | CARD 475 | CARE 476 | CARK 477 | CARL 478 | CARN 479 | CARP 480 | CARR 481 | CARS 482 | CART 483 | CASA 484 | CASE 485 | CASH 486 | CASK 487 | CAST 488 | CATE 489 | CATS 490 | CAUL 491 | CAVE 492 | CAVY 493 | CAWS 494 | CAYS 495 | CECA 496 | CEDE 497 | CEDI 498 | CEES 499 | CEIL 500 | CELL 501 | CELS 502 | CELT 503 | CENT 504 | CEPE 505 | CEPS 506 | CERE 507 | CERO 508 | CESS 509 | CETE 510 | CHAD 511 | CHAM 512 | CHAO 513 | CHAP 514 | CHAR 515 | CHAT 516 | CHAW 517 | CHAY 518 | CHEF 519 | CHEW 520 | CHEZ 521 | CHIA 522 | CHIC 523 | CHID 524 | CHIN 525 | CHIP 526 | CHIS 527 | CHIT 528 | CHON 529 | CHOP 530 | CHOW 531 | CHUB 532 | CHUG 533 | CHUM 534 | CIAO 535 | CINE 536 | CION 537 | CIRE 538 | CIST 539 | CITE 540 | CITY 541 | CLAD 542 | CLAG 543 | CLAM 544 | CLAN 545 | CLAP 546 | CLAW 547 | CLAY 548 | CLEF 549 | CLEW 550 | CLIP 551 | CLOD 552 | CLOG 553 | CLON 554 | CLOP 555 | CLOT 556 | CLOY 557 | CLUB 558 | CLUE 559 | COAL 560 | COAT 561 | COAX 562 | COBB 563 | COBS 564 | COCA 565 | COCK 566 | COCO 567 | CODA 568 | CODE 569 | CODS 570 | COED 571 | COFF 572 | COFT 573 | COGS 574 | COHO 575 | COIF 576 | COIL 577 | COIN 578 | COIR 579 | COKE 580 | COLA 581 | COLD 582 | COLE 583 | COLS 584 | COLT 585 | COLY 586 | COMA 587 | COMB 588 | COME 589 | COMP 590 | CONE 591 | CONI 592 | CONK 593 | CONN 594 | CONS 595 | CONY 596 | COOF 597 | COOK 598 | COOL 599 | COON 600 | COOP 601 | COOS 602 | COOT 603 | COPE 604 | COPS 605 | COPY 606 | CORD 607 | CORE 608 | CORF 609 | CORK 610 | CORM 611 | CORN 612 | CORY 613 | COSH 614 | COSS 615 | COST 616 | COSY 617 | COTE 618 | COTS 619 | COUP 620 | COVE 621 | COWL 622 | COWS 623 | COWY 624 | COXA 625 | COYS 626 | COZY 627 | CRAB 628 | CRAG 629 | CRAM 630 | CRAP 631 | CRAW 632 | CREW 633 | CRIB 634 | CRIS 635 | CROC 636 | CROP 637 | CROW 638 | CRUD 639 | CRUS 640 | CRUX 641 | CUBE 642 | CUBS 643 | CUDS 644 | CUED 645 | CUES 646 | CUFF 647 | CUIF 648 | CUKE 649 | CULL 650 | CULM 651 | CULT 652 | CUNT 653 | CUPS 654 | CURB 655 | CURD 656 | CURE 657 | CURF 658 | CURL 659 | CURN 660 | CURR 661 | CURS 662 | CURT 663 | CUSK 664 | CUSP 665 | CUSS 666 | CUTE 667 | CUTS 668 | CWMS 669 | CYAN 670 | CYMA 671 | CYME 672 | CYST 673 | CZAR 674 | DABS 675 | DACE 676 | DADA 677 | DADO 678 | DADS 679 | DAFF 680 | DAFT 681 | DAGO 682 | DAGS 683 | DAHL 684 | DAHS 685 | DAIS 686 | DAKS 687 | DALE 688 | DALS 689 | DAME 690 | DAMN 691 | DAMP 692 | DAMS 693 | DANG 694 | DANK 695 | DAPS 696 | DARB 697 | DARE 698 | DARK 699 | DARN 700 | DART 701 | DASH 702 | DATA 703 | DATE 704 | DATO 705 | DAUB 706 | DAUT 707 | DAVY 708 | DAWK 709 | DAWN 710 | DAWS 711 | DAWT 712 | DAYS 713 | DAZE 714 | DEAD 715 | DEAF 716 | DEAL 717 | DEAN 718 | DEAR 719 | DEBS 720 | DEBT 721 | DECK 722 | DECO 723 | DEED 724 | DEEM 725 | DEEP 726 | DEER 727 | DEES 728 | DEET 729 | DEFI 730 | DEFT 731 | DEFY 732 | DEIL 733 | DEKE 734 | DELE 735 | DELF 736 | DELI 737 | DELL 738 | DELS 739 | DEME 740 | DEMO 741 | DEMY 742 | DENE 743 | DENS 744 | DENT 745 | DENY 746 | DERE 747 | DERM 748 | DESK 749 | DEVA 750 | DEVS 751 | DEWS 752 | DEWY 753 | DEXY 754 | DEYS 755 | DHAK 756 | DHAL 757 | DHOW 758 | DIAL 759 | DIBS 760 | DICE 761 | DICK 762 | DIDO 763 | DIDY 764 | DIED 765 | DIEL 766 | DIES 767 | DIET 768 | DIGS 769 | DIKE 770 | DILL 771 | DIME 772 | DIMS 773 | DINE 774 | DING 775 | DINK 776 | DINS 777 | DINT 778 | DIOL 779 | DIPS 780 | DIPT 781 | DIRE 782 | DIRK 783 | DIRL 784 | DIRT 785 | DISC 786 | DISH 787 | DISK 788 | DISS 789 | DITA 790 | DITE 791 | DITS 792 | DITZ 793 | DIVA 794 | DIVE 795 | DJIN 796 | DOAT 797 | DOBY 798 | DOCK 799 | DOCS 800 | DODO 801 | DOER 802 | DOES 803 | DOFF 804 | DOGE 805 | DOGS 806 | DOGY 807 | DOIT 808 | DOJO 809 | DOLE 810 | DOLL 811 | DOLS 812 | DOLT 813 | DOME 814 | DOMS 815 | DONA 816 | DONE 817 | DONG 818 | DONS 819 | DOOM 820 | DOOR 821 | DOPA 822 | DOPE 823 | DOPY 824 | DORE 825 | DORK 826 | DORM 827 | DORP 828 | DORR 829 | DORS 830 | DORY 831 | DOSE 832 | DOSS 833 | DOST 834 | DOTE 835 | DOTH 836 | DOTS 837 | DOTY 838 | DOUM 839 | DOUR 840 | DOUX 841 | DOVE 842 | DOWN 843 | DOWS 844 | DOXY 845 | DOZE 846 | DOZY 847 | DRAB 848 | DRAG 849 | DRAM 850 | DRAT 851 | DRAW 852 | DRAY 853 | DREE 854 | DREG 855 | DREK 856 | DREW 857 | DRIB 858 | DRIP 859 | DROP 860 | DRUB 861 | DRUG 862 | DRUM 863 | DRYS 864 | DUAD 865 | DUAL 866 | DUBS 867 | DUCE 868 | DUCI 869 | DUCK 870 | DUCT 871 | DUDE 872 | DUDS 873 | DUEL 874 | DUES 875 | DUET 876 | DUFF 877 | DUGS 878 | DUIT 879 | DUKE 880 | DULL 881 | DULY 882 | DUMA 883 | DUMB 884 | DUMP 885 | DUNE 886 | DUNG 887 | DUNK 888 | DUNS 889 | DUNT 890 | DUOS 891 | DUPE 892 | DUPS 893 | DURA 894 | DURE 895 | DURN 896 | DURO 897 | DURR 898 | DUSK 899 | DUST 900 | DUTY 901 | DYAD 902 | DYED 903 | DYER 904 | DYES 905 | DYKE 906 | DYNE 907 | EACH 908 | EARL 909 | EARN 910 | EARS 911 | EASE 912 | EAST 913 | EASY 914 | EATH 915 | EATS 916 | EAUX 917 | EAVE 918 | EBBS 919 | EBON 920 | ECHE 921 | ECHO 922 | ECRU 923 | ECUS 924 | EDDO 925 | EDDY 926 | EDGE 927 | EDGY 928 | EDHS 929 | EDIT 930 | EELS 931 | EELY 932 | EERY 933 | EFFS 934 | EFTS 935 | EGAD 936 | EGAL 937 | EGER 938 | EGGS 939 | EGGY 940 | EGIS 941 | EGOS 942 | EIDE 943 | EKED 944 | EKES 945 | ELAN 946 | ELDS 947 | ELHI 948 | ELKS 949 | ELLS 950 | ELMS 951 | ELMY 952 | ELSE 953 | EMES 954 | EMEU 955 | EMFS 956 | EMIC 957 | EMIR 958 | EMIT 959 | EMUS 960 | EMYD 961 | ENDS 962 | ENGS 963 | ENOL 964 | ENOW 965 | ENVY 966 | EONS 967 | EPEE 968 | EPHA 969 | EPIC 970 | EPOS 971 | ERAS 972 | ERGO 973 | ERGS 974 | ERNE 975 | ERNS 976 | EROS 977 | ERRS 978 | ERST 979 | ESES 980 | ESPY 981 | ETAS 982 | ETCH 983 | ETHS 984 | ETIC 985 | ETNA 986 | ETUI 987 | EURO 988 | EVEN 989 | EVER 990 | EVES 991 | EVIL 992 | EWER 993 | EWES 994 | EXAM 995 | EXEC 996 | EXES 997 | EXIT 998 | EXON 999 | EXPO 1000 | EYAS 1001 | EYED 1002 | EYEN 1003 | EYER 1004 | EYES 1005 | EYNE 1006 | EYRA 1007 | EYRE 1008 | EYRY 1009 | FACE 1010 | FACT 1011 | FADE 1012 | FADO 1013 | FADS 1014 | FAGS 1015 | FAIL 1016 | FAIN 1017 | FAIR 1018 | FAKE 1019 | FALL 1020 | FALX 1021 | FAME 1022 | FANE 1023 | FANG 1024 | FANO 1025 | FANS 1026 | FARD 1027 | FARE 1028 | FARL 1029 | FARM 1030 | FARO 1031 | FART 1032 | FASH 1033 | FAST 1034 | FATE 1035 | FATS 1036 | FAUN 1037 | FAUX 1038 | FAVA 1039 | FAVE 1040 | FAWN 1041 | FAYS 1042 | FAZE 1043 | FEAL 1044 | FEAR 1045 | FEAT 1046 | FECK 1047 | FEDS 1048 | FEED 1049 | FEEL 1050 | FEES 1051 | FEET 1052 | FEHS 1053 | FELL 1054 | FELT 1055 | FEME 1056 | FEMS 1057 | FEND 1058 | FENS 1059 | FEOD 1060 | FERE 1061 | FERN 1062 | FESS 1063 | FETA 1064 | FETE 1065 | FETS 1066 | FEUD 1067 | FEUS 1068 | FIAR 1069 | FIAT 1070 | FIBS 1071 | FICE 1072 | FICO 1073 | FIDO 1074 | FIDS 1075 | FIEF 1076 | FIFE 1077 | FIGS 1078 | FILA 1079 | FILE 1080 | FILL 1081 | FILM 1082 | FILO 1083 | FILS 1084 | FIND 1085 | FINE 1086 | FINK 1087 | FINO 1088 | FINS 1089 | FIRE 1090 | FIRM 1091 | FIRN 1092 | FIRS 1093 | FISC 1094 | FISH 1095 | FIST 1096 | FITS 1097 | FIVE 1098 | FIXT 1099 | FIZZ 1100 | FLAB 1101 | FLAG 1102 | FLAK 1103 | FLAM 1104 | FLAN 1105 | FLAP 1106 | FLAT 1107 | FLAW 1108 | FLAX 1109 | FLAY 1110 | FLEA 1111 | FLED 1112 | FLEE 1113 | FLEW 1114 | FLEX 1115 | FLEY 1116 | FLIC 1117 | FLIP 1118 | FLIT 1119 | FLOC 1120 | FLOE 1121 | FLOG 1122 | FLOP 1123 | FLOW 1124 | FLUB 1125 | FLUE 1126 | FLUS 1127 | FLUX 1128 | FOAL 1129 | FOAM 1130 | FOBS 1131 | FOCI 1132 | FOES 1133 | FOGS 1134 | FOGY 1135 | FOHN 1136 | FOIL 1137 | FOIN 1138 | FOLD 1139 | FOLK 1140 | FOND 1141 | FONS 1142 | FONT 1143 | FOOD 1144 | FOOL 1145 | FOOT 1146 | FOPS 1147 | FORA 1148 | FORB 1149 | FORD 1150 | FORE 1151 | FORK 1152 | FORM 1153 | FORT 1154 | FOSS 1155 | FOUL 1156 | FOUR 1157 | FOWL 1158 | FOXY 1159 | FOYS 1160 | FOZY 1161 | FRAE 1162 | FRAG 1163 | FRAP 1164 | FRAT 1165 | FRAY 1166 | FREE 1167 | FRET 1168 | FRIG 1169 | FRIT 1170 | FRIZ 1171 | FROE 1172 | FROG 1173 | FROM 1174 | FROW 1175 | FRUG 1176 | FUBS 1177 | FUCI 1178 | FUCK 1179 | FUDS 1180 | FUEL 1181 | FUGS 1182 | FUGU 1183 | FUJI 1184 | FULL 1185 | FUME 1186 | FUMY 1187 | FUND 1188 | FUNK 1189 | FUNS 1190 | FURL 1191 | FURS 1192 | FURY 1193 | FUSE 1194 | FUSS 1195 | FUTZ 1196 | FUZE 1197 | FUZZ 1198 | FYCE 1199 | FYKE 1200 | GABS 1201 | GABY 1202 | GADI 1203 | GADS 1204 | GAED 1205 | GAEN 1206 | GAES 1207 | GAFF 1208 | GAGA 1209 | GAGE 1210 | GAGS 1211 | GAIN 1212 | GAIT 1213 | GALA 1214 | GALE 1215 | GALL 1216 | GALS 1217 | GAMA 1218 | GAMB 1219 | GAME 1220 | GAMP 1221 | GAMS 1222 | GAMY 1223 | GANE 1224 | GANG 1225 | GAOL 1226 | GAPE 1227 | GAPS 1228 | GAPY 1229 | GARB 1230 | GARS 1231 | GASH 1232 | GASP 1233 | GAST 1234 | GATE 1235 | GATS 1236 | GAUD 1237 | GAUM 1238 | GAUN 1239 | GAUR 1240 | GAVE 1241 | GAWK 1242 | GAWP 1243 | GAYS 1244 | GAZE 1245 | GEAR 1246 | GECK 1247 | GEDS 1248 | GEED 1249 | GEEK 1250 | GEES 1251 | GEEZ 1252 | GELD 1253 | GELS 1254 | GELT 1255 | GEMS 1256 | GENE 1257 | GENS 1258 | GENT 1259 | GENU 1260 | GERM 1261 | GEST 1262 | GETA 1263 | GETS 1264 | GEUM 1265 | GHAT 1266 | GHEE 1267 | GHIS 1268 | GIBE 1269 | GIBS 1270 | GIDS 1271 | GIED 1272 | GIEN 1273 | GIES 1274 | GIFT 1275 | GIGA 1276 | GIGS 1277 | GILD 1278 | GILL 1279 | GILT 1280 | GIMP 1281 | GINK 1282 | GINS 1283 | GIPS 1284 | GIRD 1285 | GIRL 1286 | GIRN 1287 | GIRO 1288 | GIRT 1289 | GIST 1290 | GITS 1291 | GIVE 1292 | GLAD 1293 | GLED 1294 | GLEE 1295 | GLEG 1296 | GLEN 1297 | GLEY 1298 | GLIA 1299 | GLIB 1300 | GLIM 1301 | GLOB 1302 | GLOM 1303 | GLOP 1304 | GLOW 1305 | GLUE 1306 | GLUG 1307 | GLUM 1308 | GLUT 1309 | GNAR 1310 | GNAT 1311 | GNAW 1312 | GNUS 1313 | GOAD 1314 | GOAL 1315 | GOAS 1316 | GOAT 1317 | GOBO 1318 | GOBS 1319 | GOBY 1320 | GODS 1321 | GOER 1322 | GOES 1323 | GOGO 1324 | GOLD 1325 | GOLF 1326 | GONE 1327 | GONG 1328 | GOOD 1329 | GOOF 1330 | GOOK 1331 | GOON 1332 | GOOP 1333 | GOOS 1334 | GORE 1335 | GORP 1336 | GORY 1337 | GOSH 1338 | GOUT 1339 | GOWD 1340 | GOWK 1341 | GOWN 1342 | GOYS 1343 | GRAB 1344 | GRAD 1345 | GRAM 1346 | GRAN 1347 | GRAT 1348 | GRAY 1349 | GREE 1350 | GREW 1351 | GREY 1352 | GRID 1353 | GRIG 1354 | GRIM 1355 | GRIN 1356 | GRIP 1357 | GRIT 1358 | GROG 1359 | GROT 1360 | GROW 1361 | GRUB 1362 | GRUE 1363 | GRUM 1364 | GUAN 1365 | GUAR 1366 | GUCK 1367 | GUDE 1368 | GUFF 1369 | GUID 1370 | GULF 1371 | GULL 1372 | GULP 1373 | GULS 1374 | GUMS 1375 | GUNK 1376 | GUNS 1377 | GURU 1378 | GUSH 1379 | GUST 1380 | GUTS 1381 | GUVS 1382 | GUYS 1383 | GYBE 1384 | GYMS 1385 | GYPS 1386 | GYRE 1387 | GYRI 1388 | GYRO 1389 | GYVE 1390 | HAAF 1391 | HAAR 1392 | HABU 1393 | HACK 1394 | HADE 1395 | HADJ 1396 | HAED 1397 | HAEM 1398 | HAEN 1399 | HAES 1400 | HAET 1401 | HAFT 1402 | HAGS 1403 | HAHA 1404 | HAHS 1405 | HAIK 1406 | HAIL 1407 | HAIR 1408 | HAJI 1409 | HAJJ 1410 | HAKE 1411 | HALE 1412 | HALF 1413 | HALL 1414 | HALM 1415 | HALO 1416 | HALT 1417 | HAME 1418 | HAMS 1419 | HAND 1420 | HANG 1421 | HANK 1422 | HANT 1423 | HAPS 1424 | HARD 1425 | HARE 1426 | HARK 1427 | HARL 1428 | HARM 1429 | HARP 1430 | HART 1431 | HASH 1432 | HASP 1433 | HAST 1434 | HATE 1435 | HATH 1436 | HATS 1437 | HAUL 1438 | HAUT 1439 | HAVE 1440 | HAWK 1441 | HAWS 1442 | HAYS 1443 | HAZE 1444 | HAZY 1445 | HEAD 1446 | HEAL 1447 | HEAP 1448 | HEAR 1449 | HEAT 1450 | HEBE 1451 | HECK 1452 | HEED 1453 | HEEL 1454 | HEFT 1455 | HEHS 1456 | HEIL 1457 | HEIR 1458 | HELD 1459 | HELL 1460 | HELM 1461 | HELO 1462 | HELP 1463 | HEME 1464 | HEMP 1465 | HEMS 1466 | HENS 1467 | HENT 1468 | HERB 1469 | HERD 1470 | HERE 1471 | HERL 1472 | HERM 1473 | HERN 1474 | HERO 1475 | HERS 1476 | HEST 1477 | HETH 1478 | HETS 1479 | HEWN 1480 | HEWS 1481 | HICK 1482 | HIDE 1483 | HIED 1484 | HIES 1485 | HIGH 1486 | HIKE 1487 | HILA 1488 | HILI 1489 | HILL 1490 | HILT 1491 | HIND 1492 | HINS 1493 | HINT 1494 | HIPS 1495 | HIRE 1496 | HISN 1497 | HISS 1498 | HIST 1499 | HITS 1500 | HIVE 1501 | HOAR 1502 | HOAX 1503 | HOBO 1504 | HOBS 1505 | HOCK 1506 | HODS 1507 | HOED 1508 | HOER 1509 | HOES 1510 | HOGG 1511 | HOGS 1512 | HOKE 1513 | HOLD 1514 | HOLE 1515 | HOLK 1516 | HOLM 1517 | HOLP 1518 | HOLS 1519 | HOLT 1520 | HOLY 1521 | HOME 1522 | HOMO 1523 | HOMY 1524 | HONE 1525 | HONG 1526 | HONK 1527 | HONS 1528 | HOOD 1529 | HOOF 1530 | HOOK 1531 | HOOP 1532 | HOOT 1533 | HOPE 1534 | HOPS 1535 | HORA 1536 | HORN 1537 | HOSE 1538 | HOST 1539 | HOTS 1540 | HOUR 1541 | HOVE 1542 | HOWE 1543 | HOWF 1544 | HOWK 1545 | HOWL 1546 | HOWS 1547 | HOYA 1548 | HOYS 1549 | HUBS 1550 | HUCK 1551 | HUED 1552 | HUES 1553 | HUFF 1554 | HUGE 1555 | HUGS 1556 | HUIC 1557 | HULA 1558 | HULK 1559 | HULL 1560 | HUMP 1561 | HUMS 1562 | HUNG 1563 | HUNH 1564 | HUNK 1565 | HUNS 1566 | HUNT 1567 | HURL 1568 | HURT 1569 | HUSH 1570 | HUSK 1571 | HUTS 1572 | HWAN 1573 | HYLA 1574 | HYMN 1575 | HYPE 1576 | HYPO 1577 | HYPS 1578 | HYTE 1579 | IAMB 1580 | IBEX 1581 | IBIS 1582 | ICED 1583 | ICES 1584 | ICHS 1585 | ICKY 1586 | ICON 1587 | IDEA 1588 | IDEM 1589 | IDES 1590 | IDLE 1591 | IDLY 1592 | IDOL 1593 | IDYL 1594 | IFFY 1595 | IGLU 1596 | IKAT 1597 | IKON 1598 | ILEA 1599 | ILEX 1600 | ILIA 1601 | ILKA 1602 | ILKS 1603 | ILLS 1604 | ILLY 1605 | IMAM 1606 | IMID 1607 | IMMY 1608 | IMPI 1609 | IMPS 1610 | INBY 1611 | INCH 1612 | INFO 1613 | INIA 1614 | INKS 1615 | INKY 1616 | INLY 1617 | INNS 1618 | INRO 1619 | INTI 1620 | INTO 1621 | IONS 1622 | IOTA 1623 | IRED 1624 | IRES 1625 | IRID 1626 | IRIS 1627 | IRKS 1628 | IRON 1629 | ISBA 1630 | ISLE 1631 | ISMS 1632 | ITCH 1633 | ITEM 1634 | IWIS 1635 | IXIA 1636 | IZAR 1637 | JABS 1638 | JACK 1639 | JADE 1640 | JAGG 1641 | JAGS 1642 | JAIL 1643 | JAKE 1644 | JAMB 1645 | JAMS 1646 | JANE 1647 | JAPE 1648 | JARL 1649 | JARS 1650 | JATO 1651 | JAUK 1652 | JAUP 1653 | JAVA 1654 | JAWS 1655 | JAYS 1656 | JAZZ 1657 | JEAN 1658 | JEED 1659 | JEEP 1660 | JEER 1661 | JEES 1662 | JEEZ 1663 | JEFE 1664 | JEHU 1665 | JELL 1666 | JEON 1667 | JERK 1668 | JESS 1669 | JEST 1670 | JETE 1671 | JETS 1672 | JEUX 1673 | JEWS 1674 | JIAO 1675 | JIBB 1676 | JIBE 1677 | JIBS 1678 | JIFF 1679 | JIGS 1680 | JILL 1681 | JILT 1682 | JIMP 1683 | JINK 1684 | JINN 1685 | JINS 1686 | JINX 1687 | JISM 1688 | JIVE 1689 | JOBS 1690 | JOCK 1691 | JOES 1692 | JOEY 1693 | JOGS 1694 | JOHN 1695 | JOIN 1696 | JOKE 1697 | JOKY 1698 | JOLE 1699 | JOLT 1700 | JOSH 1701 | JOSS 1702 | JOTA 1703 | JOTS 1704 | JOUK 1705 | JOWL 1706 | JOWS 1707 | JOYS 1708 | JUBA 1709 | JUBE 1710 | JUDO 1711 | JUGA 1712 | JUGS 1713 | JUJU 1714 | JUKE 1715 | JUMP 1716 | JUNK 1717 | JUPE 1718 | JURA 1719 | JURY 1720 | JUST 1721 | JUTE 1722 | JUTS 1723 | KAAS 1724 | KABS 1725 | KADI 1726 | KAES 1727 | KAFS 1728 | KAGU 1729 | KAIF 1730 | KAIL 1731 | KAIN 1732 | KAKA 1733 | KAKI 1734 | KALE 1735 | KAME 1736 | KAMI 1737 | KANA 1738 | KANE 1739 | KAON 1740 | KAPA 1741 | KAPH 1742 | KARN 1743 | KART 1744 | KATA 1745 | KATS 1746 | KAVA 1747 | KAYO 1748 | KAYS 1749 | KBAR 1750 | KEAS 1751 | KECK 1752 | KEEF 1753 | KEEK 1754 | KEEL 1755 | KEEN 1756 | KEEP 1757 | KEET 1758 | KEFS 1759 | KEGS 1760 | KEIR 1761 | KELP 1762 | KEMP 1763 | KENO 1764 | KENS 1765 | KENT 1766 | KEPI 1767 | KEPS 1768 | KEPT 1769 | KERB 1770 | KERF 1771 | KERN 1772 | KETO 1773 | KEYS 1774 | KHAF 1775 | KHAN 1776 | KHAT 1777 | KHET 1778 | KHIS 1779 | KIBE 1780 | KICK 1781 | KIDS 1782 | KIEF 1783 | KIER 1784 | KIFS 1785 | KIKE 1786 | KILL 1787 | KILN 1788 | KILO 1789 | KILT 1790 | KINA 1791 | KIND 1792 | KINE 1793 | KING 1794 | KINK 1795 | KINO 1796 | KINS 1797 | KIPS 1798 | KIRK 1799 | KIRN 1800 | KIRS 1801 | KISS 1802 | KIST 1803 | KITE 1804 | KITH 1805 | KITS 1806 | KIVA 1807 | KIWI 1808 | KNAP 1809 | KNAR 1810 | KNEE 1811 | KNEW 1812 | KNIT 1813 | KNOB 1814 | KNOP 1815 | KNOT 1816 | KNOW 1817 | KNUR 1818 | KOAN 1819 | KOAS 1820 | KOBO 1821 | KOBS 1822 | KOEL 1823 | KOHL 1824 | KOLA 1825 | KOLO 1826 | KONK 1827 | KOOK 1828 | KOPH 1829 | KOPS 1830 | KORE 1831 | KORS 1832 | KOSS 1833 | KOTO 1834 | KRIS 1835 | KUDO 1836 | KUDU 1837 | KUES 1838 | KURU 1839 | KVAS 1840 | KYAK 1841 | KYAR 1842 | KYAT 1843 | KYTE 1844 | LABS 1845 | LACE 1846 | LACK 1847 | LACS 1848 | LACY 1849 | LADE 1850 | LADS 1851 | LADY 1852 | LAGS 1853 | LAIC 1854 | LAID 1855 | LAIN 1856 | LAIR 1857 | LAKE 1858 | LAKH 1859 | LAKY 1860 | LALL 1861 | LAMA 1862 | LAMB 1863 | LAME 1864 | LAMP 1865 | LAMS 1866 | LAND 1867 | LANE 1868 | LANG 1869 | LANK 1870 | LAPS 1871 | LARD 1872 | LARI 1873 | LARK 1874 | LARS 1875 | LASE 1876 | LASH 1877 | LASS 1878 | LAST 1879 | LATE 1880 | LATH 1881 | LATI 1882 | LATS 1883 | LAUD 1884 | LAVA 1885 | LAVE 1886 | LAVS 1887 | LAWN 1888 | LAWS 1889 | LAYS 1890 | LAZE 1891 | LAZY 1892 | LEAD 1893 | LEAF 1894 | LEAK 1895 | LEAL 1896 | LEAN 1897 | LEAP 1898 | LEAR 1899 | LEAS 1900 | LECH 1901 | LEEK 1902 | LEER 1903 | LEES 1904 | LEET 1905 | LEFT 1906 | LEGS 1907 | LEHR 1908 | LEIS 1909 | LEKE 1910 | LEKS 1911 | LEKU 1912 | LEND 1913 | LENO 1914 | LENS 1915 | LENT 1916 | LEPT 1917 | LESS 1918 | LEST 1919 | LETS 1920 | LEUD 1921 | LEVA 1922 | LEVO 1923 | LEVY 1924 | LEWD 1925 | LEYS 1926 | LIAR 1927 | LIBS 1928 | LICE 1929 | LICH 1930 | LICK 1931 | LIDO 1932 | LIDS 1933 | LIED 1934 | LIEF 1935 | LIEN 1936 | LIER 1937 | LIES 1938 | LIEU 1939 | LIFE 1940 | LIFT 1941 | LIKE 1942 | LILT 1943 | LILY 1944 | LIMA 1945 | LIMB 1946 | LIME 1947 | LIMN 1948 | LIMO 1949 | LIMP 1950 | LIMY 1951 | LINE 1952 | LING 1953 | LINK 1954 | LINN 1955 | LINO 1956 | LINS 1957 | LINT 1958 | LINY 1959 | LION 1960 | LIPS 1961 | LIRA 1962 | LIRE 1963 | LIRI 1964 | LISP 1965 | LIST 1966 | LITE 1967 | LITS 1968 | LITU 1969 | LIVE 1970 | LOAD 1971 | LOAF 1972 | LOAM 1973 | LOAN 1974 | LOBE 1975 | LOBO 1976 | LOBS 1977 | LOCA 1978 | LOCH 1979 | LOCI 1980 | LOCK 1981 | LOCO 1982 | LODE 1983 | LOFT 1984 | LOGE 1985 | LOGO 1986 | LOGS 1987 | LOGY 1988 | LOIN 1989 | LOLL 1990 | LONE 1991 | LONG 1992 | LOOF 1993 | LOOK 1994 | LOOM 1995 | LOON 1996 | LOOP 1997 | LOOS 1998 | LOOT 1999 | LOPE 2000 | LOPS 2001 | LORD 2002 | LORE 2003 | LORN 2004 | LORY 2005 | LOSE 2006 | LOSS 2007 | LOST 2008 | LOTA 2009 | LOTH 2010 | LOTI 2011 | LOTS 2012 | LOUD 2013 | LOUP 2014 | LOUR 2015 | LOUT 2016 | LOVE 2017 | LOWE 2018 | LOWN 2019 | LOWS 2020 | LUAU 2021 | LUBE 2022 | LUCE 2023 | LUCK 2024 | LUDE 2025 | LUES 2026 | LUFF 2027 | LUGE 2028 | LUGS 2029 | LULL 2030 | LULU 2031 | LUMP 2032 | LUMS 2033 | LUNA 2034 | LUNE 2035 | LUNG 2036 | LUNK 2037 | LUNT 2038 | LUNY 2039 | LURE 2040 | LURK 2041 | LUSH 2042 | LUST 2043 | LUTE 2044 | LUTZ 2045 | LUVS 2046 | LUXE 2047 | LWEI 2048 | LYES 2049 | LYNX 2050 | LYRE 2051 | LYSE 2052 | MAAR 2053 | MABE 2054 | MACE 2055 | MACH 2056 | MACK 2057 | MACS 2058 | MADE 2059 | MADS 2060 | MAES 2061 | MAGE 2062 | MAGI 2063 | MAGS 2064 | MAID 2065 | MAIL 2066 | MAIM 2067 | MAIN 2068 | MAIR 2069 | MAKE 2070 | MAKO 2071 | MALE 2072 | MALL 2073 | MALM 2074 | MALT 2075 | MAMA 2076 | MANA 2077 | MANE 2078 | MANO 2079 | MANS 2080 | MANY 2081 | MAPS 2082 | MARC 2083 | MARE 2084 | MARK 2085 | MARL 2086 | MARS 2087 | MART 2088 | MASH 2089 | MASK 2090 | MASS 2091 | MAST 2092 | MATE 2093 | MATH 2094 | MATS 2095 | MATT 2096 | MAUD 2097 | MAUL 2098 | MAUN 2099 | MAUT 2100 | MAWN 2101 | MAWS 2102 | MAXI 2103 | MAYA 2104 | MAYO 2105 | MAYS 2106 | MAZE 2107 | MAZY 2108 | MEAD 2109 | MEAL 2110 | MEAN 2111 | MEAT 2112 | MEED 2113 | MEEK 2114 | MEET 2115 | MELD 2116 | MELL 2117 | MELS 2118 | MELT 2119 | MEMO 2120 | MEMS 2121 | MEND 2122 | MENO 2123 | MENU 2124 | MEOU 2125 | MEOW 2126 | MERE 2127 | MERK 2128 | MERL 2129 | MESA 2130 | MESH 2131 | MESS 2132 | META 2133 | METE 2134 | METH 2135 | MEWL 2136 | MEWS 2137 | MEZE 2138 | MHOS 2139 | MIBS 2140 | MICA 2141 | MICE 2142 | MICK 2143 | MIDI 2144 | MIDS 2145 | MIEN 2146 | MIFF 2147 | MIGG 2148 | MIGS 2149 | MIKE 2150 | MILD 2151 | MILE 2152 | MILK 2153 | MILL 2154 | MILO 2155 | MILS 2156 | MILT 2157 | MIME 2158 | MINA 2159 | MIND 2160 | MINE 2161 | MINI 2162 | MINK 2163 | MINT 2164 | MINX 2165 | MIRE 2166 | MIRI 2167 | MIRK 2168 | MIRS 2169 | MIRY 2170 | MISE 2171 | MISO 2172 | MISS 2173 | MIST 2174 | MITE 2175 | MITT 2176 | MITY 2177 | MIXT 2178 | MOAN 2179 | MOAS 2180 | MOAT 2181 | MOBS 2182 | MOCK 2183 | MOCS 2184 | MODE 2185 | MODI 2186 | MODS 2187 | MOGS 2188 | MOIL 2189 | MOJO 2190 | MOKE 2191 | MOLA 2192 | MOLD 2193 | MOLE 2194 | MOLL 2195 | MOLS 2196 | MOLT 2197 | MOLY 2198 | MOME 2199 | MOMI 2200 | MOMS 2201 | MONK 2202 | MONO 2203 | MONS 2204 | MONY 2205 | MOOD 2206 | MOOL 2207 | MOON 2208 | MOOR 2209 | MOOS 2210 | MOOT 2211 | MOPE 2212 | MOPS 2213 | MOPY 2214 | MORA 2215 | MORE 2216 | MORN 2217 | MORS 2218 | MORT 2219 | MOSK 2220 | MOSS 2221 | MOST 2222 | MOTE 2223 | MOTH 2224 | MOTS 2225 | MOTT 2226 | MOUE 2227 | MOVE 2228 | MOWN 2229 | MOWS 2230 | MOXA 2231 | MOZO 2232 | MUCH 2233 | MUCK 2234 | MUDS 2235 | MUFF 2236 | MUGG 2237 | MUGS 2238 | MULE 2239 | MULL 2240 | MUMM 2241 | MUMP 2242 | MUMS 2243 | MUMU 2244 | MUNI 2245 | MUNS 2246 | MUON 2247 | MURA 2248 | MURE 2249 | MURK 2250 | MURR 2251 | MUSE 2252 | MUSH 2253 | MUSK 2254 | MUSS 2255 | MUST 2256 | MUTE 2257 | MUTS 2258 | MUTT 2259 | MYNA 2260 | MYTH 2261 | NAAN 2262 | NABE 2263 | NABS 2264 | NADA 2265 | NAGS 2266 | NAIF 2267 | NAIL 2268 | NAME 2269 | NANA 2270 | NANS 2271 | NAOI 2272 | NAOS 2273 | NAPE 2274 | NAPS 2275 | NARC 2276 | NARD 2277 | NARK 2278 | NARY 2279 | NAVE 2280 | NAVY 2281 | NAYS 2282 | NAZI 2283 | NEAP 2284 | NEAR 2285 | NEAT 2286 | NEBS 2287 | NECK 2288 | NEED 2289 | NEEM 2290 | NEEP 2291 | NEIF 2292 | NEMA 2293 | NENE 2294 | NEON 2295 | NERD 2296 | NESS 2297 | NEST 2298 | NETS 2299 | NETT 2300 | NEUK 2301 | NEUM 2302 | NEVE 2303 | NEVI 2304 | NEWS 2305 | NEWT 2306 | NEXT 2307 | NIBS 2308 | NICE 2309 | NICK 2310 | NIDE 2311 | NIDI 2312 | NIGH 2313 | NILL 2314 | NILS 2315 | NIMS 2316 | NINE 2317 | NIPA 2318 | NIPS 2319 | NISI 2320 | NITE 2321 | NITS 2322 | NIXE 2323 | NIXY 2324 | NOBS 2325 | NOCK 2326 | NODE 2327 | NODI 2328 | NODS 2329 | NOEL 2330 | NOES 2331 | NOGG 2332 | NOGS 2333 | NOIL 2334 | NOIR 2335 | NOLO 2336 | NOMA 2337 | NOME 2338 | NOMS 2339 | NONA 2340 | NONE 2341 | NOOK 2342 | NOON 2343 | NOPE 2344 | NORI 2345 | NORM 2346 | NOSE 2347 | NOSH 2348 | NOSY 2349 | NOTA 2350 | NOTE 2351 | NOUN 2352 | NOUS 2353 | NOVA 2354 | NOWS 2355 | NOWT 2356 | NUBS 2357 | NUDE 2358 | NUKE 2359 | NULL 2360 | NUMB 2361 | NUNS 2362 | NURD 2363 | NURL 2364 | NUTS 2365 | OAFS 2366 | OAKS 2367 | OARS 2368 | OAST 2369 | OATH 2370 | OATS 2371 | OBES 2372 | OBEY 2373 | OBIA 2374 | OBIS 2375 | OBIT 2376 | OBOE 2377 | OBOL 2378 | OCAS 2379 | ODDS 2380 | ODEA 2381 | ODES 2382 | ODIC 2383 | ODOR 2384 | ODYL 2385 | OFAY 2386 | OFFS 2387 | OGAM 2388 | OGEE 2389 | OGLE 2390 | OGRE 2391 | OHED 2392 | OHIA 2393 | OHMS 2394 | OILS 2395 | OILY 2396 | OINK 2397 | OKAS 2398 | OKAY 2399 | OKEH 2400 | OKES 2401 | OKRA 2402 | OLDS 2403 | OLDY 2404 | OLEA 2405 | OLEO 2406 | OLES 2407 | OLIO 2408 | OLLA 2409 | OMEN 2410 | OMER 2411 | OMIT 2412 | ONCE 2413 | ONES 2414 | ONLY 2415 | ONTO 2416 | ONUS 2417 | ONYX 2418 | OOHS 2419 | OOPS 2420 | OOTS 2421 | OOZE 2422 | OOZY 2423 | OPAH 2424 | OPAL 2425 | OPED 2426 | OPEN 2427 | OPES 2428 | OPTS 2429 | OPUS 2430 | ORAD 2431 | ORAL 2432 | ORBS 2433 | ORBY 2434 | ORCA 2435 | ORCS 2436 | ORDO 2437 | ORES 2438 | ORGY 2439 | ORLE 2440 | ORRA 2441 | ORTS 2442 | ORYX 2443 | ORZO 2444 | OSAR 2445 | OSES 2446 | OSSA 2447 | OTIC 2448 | OTTO 2449 | OUCH 2450 | OUDS 2451 | OUPH 2452 | OURS 2453 | OUST 2454 | OUTS 2455 | OUZO 2456 | OVAL 2457 | OVEN 2458 | OVER 2459 | OVUM 2460 | OWED 2461 | OWES 2462 | OWLS 2463 | OWNS 2464 | OWSE 2465 | OXEN 2466 | OXES 2467 | OXID 2468 | OXIM 2469 | OYER 2470 | OYES 2471 | OYEZ 2472 | PACA 2473 | PACE 2474 | PACK 2475 | PACS 2476 | PACT 2477 | PADI 2478 | PADS 2479 | PAGE 2480 | PAID 2481 | PAIK 2482 | PAIL 2483 | PAIN 2484 | PAIR 2485 | PALE 2486 | PALL 2487 | PALM 2488 | PALP 2489 | PALS 2490 | PALY 2491 | PAMS 2492 | PANE 2493 | PANG 2494 | PANS 2495 | PANT 2496 | PAPA 2497 | PAPS 2498 | PARA 2499 | PARD 2500 | PARE 2501 | PARK 2502 | PARR 2503 | PARS 2504 | PART 2505 | PASE 2506 | PASH 2507 | PASS 2508 | PAST 2509 | PATE 2510 | PATH 2511 | PATS 2512 | PATY 2513 | PAVE 2514 | PAWL 2515 | PAWN 2516 | PAWS 2517 | PAYS 2518 | PEAG 2519 | PEAK 2520 | PEAL 2521 | PEAN 2522 | PEAR 2523 | PEAS 2524 | PEAT 2525 | PECH 2526 | PECK 2527 | PECS 2528 | PEDS 2529 | PEED 2530 | PEEK 2531 | PEEL 2532 | PEEN 2533 | PEEP 2534 | PEER 2535 | PEES 2536 | PEGS 2537 | PEHS 2538 | PEIN 2539 | PEKE 2540 | PELE 2541 | PELF 2542 | PELT 2543 | PEND 2544 | PENS 2545 | PENT 2546 | PEON 2547 | PEPO 2548 | PEPS 2549 | PERI 2550 | PERK 2551 | PERM 2552 | PERT 2553 | PESO 2554 | PEST 2555 | PETS 2556 | PEWS 2557 | PFFT 2558 | PFUI 2559 | PHAT 2560 | PHEW 2561 | PHIS 2562 | PHIZ 2563 | PHON 2564 | PHOT 2565 | PHUT 2566 | PIAL 2567 | PIAN 2568 | PIAS 2569 | PICA 2570 | PICE 2571 | PICK 2572 | PICS 2573 | PIED 2574 | PIER 2575 | PIES 2576 | PIGS 2577 | PIKA 2578 | PIKE 2579 | PIKI 2580 | PILE 2581 | PILI 2582 | PILL 2583 | PILY 2584 | PIMA 2585 | PIMP 2586 | PINA 2587 | PINE 2588 | PING 2589 | PINK 2590 | PINS 2591 | PINT 2592 | PINY 2593 | PION 2594 | PIPE 2595 | PIPS 2596 | PIPY 2597 | PIRN 2598 | PISH 2599 | PISO 2600 | PISS 2601 | PITA 2602 | PITH 2603 | PITS 2604 | PITY 2605 | PIXY 2606 | PLAN 2607 | PLAT 2608 | PLAY 2609 | PLEA 2610 | PLEB 2611 | PLED 2612 | PLEW 2613 | PLIE 2614 | PLOD 2615 | PLOP 2616 | PLOT 2617 | PLOW 2618 | PLOY 2619 | PLUG 2620 | PLUM 2621 | PLUS 2622 | POCK 2623 | POCO 2624 | PODS 2625 | POEM 2626 | POET 2627 | POGY 2628 | POIS 2629 | POKE 2630 | POKY 2631 | POLE 2632 | POLL 2633 | POLO 2634 | POLS 2635 | POLY 2636 | POME 2637 | POMP 2638 | POMS 2639 | POND 2640 | PONE 2641 | PONG 2642 | PONS 2643 | PONY 2644 | POOD 2645 | POOF 2646 | POOH 2647 | POOL 2648 | POON 2649 | POOP 2650 | POOR 2651 | POPE 2652 | POPS 2653 | PORE 2654 | PORK 2655 | PORN 2656 | PORT 2657 | POSE 2658 | POSH 2659 | POST 2660 | POSY 2661 | POTS 2662 | POUF 2663 | POUR 2664 | POUT 2665 | POWS 2666 | PRAM 2667 | PRAO 2668 | PRAT 2669 | PRAU 2670 | PRAY 2671 | PREE 2672 | PREP 2673 | PREX 2674 | PREY 2675 | PREZ 2676 | PRIG 2677 | PRIM 2678 | PROA 2679 | PROD 2680 | PROF 2681 | PROG 2682 | PROM 2683 | PROP 2684 | PROS 2685 | PROW 2686 | PSIS 2687 | PSST 2688 | PUBS 2689 | PUCE 2690 | PUCK 2691 | PUDS 2692 | PUFF 2693 | PUGH 2694 | PUGS 2695 | PUJA 2696 | PUKE 2697 | PULA 2698 | PULE 2699 | PULI 2700 | PULL 2701 | PULP 2702 | PULS 2703 | PUMA 2704 | PUMP 2705 | PUNA 2706 | PUNG 2707 | PUNK 2708 | PUNS 2709 | PUNT 2710 | PUNY 2711 | PUPA 2712 | PUPS 2713 | PURE 2714 | PURI 2715 | PURL 2716 | PURR 2717 | PURS 2718 | PUSH 2719 | PUSS 2720 | PUTS 2721 | PUTT 2722 | PUTZ 2723 | PYAS 2724 | PYES 2725 | PYIC 2726 | PYIN 2727 | PYRE 2728 | QAID 2729 | QATS 2730 | QOPH 2731 | QUAD 2732 | QUAG 2733 | QUAI 2734 | QUAY 2735 | QUEY 2736 | QUID 2737 | QUIN 2738 | QUIP 2739 | QUIT 2740 | QUIZ 2741 | QUOD 2742 | RACE 2743 | RACK 2744 | RACY 2745 | RADS 2746 | RAFF 2747 | RAFT 2748 | RAGA 2749 | RAGE 2750 | RAGI 2751 | RAGS 2752 | RAIA 2753 | RAID 2754 | RAIL 2755 | RAIN 2756 | RAJA 2757 | RAKE 2758 | RAKI 2759 | RALE 2760 | RAMI 2761 | RAMP 2762 | RAMS 2763 | RAND 2764 | RANG 2765 | RANI 2766 | RANK 2767 | RANT 2768 | RAPE 2769 | RAPS 2770 | RAPT 2771 | RARE 2772 | RASE 2773 | RASH 2774 | RASP 2775 | RATE 2776 | RATH 2777 | RATO 2778 | RATS 2779 | RAVE 2780 | RAWS 2781 | RAYA 2782 | RAYS 2783 | RAZE 2784 | RAZZ 2785 | READ 2786 | REAL 2787 | REAM 2788 | REAP 2789 | REAR 2790 | REBS 2791 | RECK 2792 | RECS 2793 | REDD 2794 | REDE 2795 | REDO 2796 | REDS 2797 | REED 2798 | REEF 2799 | REEK 2800 | REEL 2801 | REES 2802 | REFS 2803 | REFT 2804 | REGS 2805 | REIF 2806 | REIN 2807 | REIS 2808 | RELY 2809 | REMS 2810 | REND 2811 | RENT 2812 | REPO 2813 | REPP 2814 | REPS 2815 | RESH 2816 | REST 2817 | RETE 2818 | RETS 2819 | REVS 2820 | RHEA 2821 | RHOS 2822 | RHUS 2823 | RIAL 2824 | RIAS 2825 | RIBS 2826 | RICE 2827 | RICH 2828 | RICK 2829 | RIDE 2830 | RIDS 2831 | RIEL 2832 | RIFE 2833 | RIFF 2834 | RIFS 2835 | RIFT 2836 | RIGS 2837 | RILE 2838 | RILL 2839 | RIME 2840 | RIMS 2841 | RIMY 2842 | RIND 2843 | RING 2844 | RINK 2845 | RINS 2846 | RIOT 2847 | RIPE 2848 | RIPS 2849 | RISE 2850 | RISK 2851 | RITE 2852 | RITZ 2853 | RIVE 2854 | ROAD 2855 | ROAM 2856 | ROAN 2857 | ROAR 2858 | ROBE 2859 | ROBS 2860 | ROCK 2861 | ROCS 2862 | RODE 2863 | RODS 2864 | ROES 2865 | ROIL 2866 | ROLE 2867 | ROLF 2868 | ROLL 2869 | ROMP 2870 | ROMS 2871 | ROOD 2872 | ROOF 2873 | ROOK 2874 | ROOM 2875 | ROOT 2876 | ROPE 2877 | ROPY 2878 | ROSE 2879 | ROSY 2880 | ROTA 2881 | ROTE 2882 | ROTI 2883 | ROTL 2884 | ROTO 2885 | ROTS 2886 | ROUE 2887 | ROUP 2888 | ROUT 2889 | ROUX 2890 | ROVE 2891 | ROWS 2892 | RUBE 2893 | RUBS 2894 | RUBY 2895 | RUCK 2896 | RUDD 2897 | RUDE 2898 | RUED 2899 | RUER 2900 | RUES 2901 | RUFF 2902 | RUGA 2903 | RUGS 2904 | RUIN 2905 | RULE 2906 | RULY 2907 | RUMP 2908 | RUMS 2909 | RUNE 2910 | RUNG 2911 | RUNS 2912 | RUNT 2913 | RUSE 2914 | RUSH 2915 | RUSK 2916 | RUST 2917 | RUTH 2918 | RUTS 2919 | RYAS 2920 | RYES 2921 | RYKE 2922 | RYND 2923 | RYOT 2924 | SABE 2925 | SABS 2926 | SACK 2927 | SACS 2928 | SADE 2929 | SADI 2930 | SAFE 2931 | SAGA 2932 | SAGE 2933 | SAGO 2934 | SAGS 2935 | SAGY 2936 | SAID 2937 | SAIL 2938 | SAIN 2939 | SAKE 2940 | SAKI 2941 | SALE 2942 | SALL 2943 | SALP 2944 | SALS 2945 | SALT 2946 | SAME 2947 | SAMP 2948 | SAND 2949 | SANE 2950 | SANG 2951 | SANK 2952 | SANS 2953 | SAPS 2954 | SARD 2955 | SARI 2956 | SARK 2957 | SASH 2958 | SASS 2959 | SATE 2960 | SATI 2961 | SAUL 2962 | SAVE 2963 | SAWN 2964 | SAWS 2965 | SAYS 2966 | SCAB 2967 | SCAD 2968 | SCAG 2969 | SCAM 2970 | SCAN 2971 | SCAR 2972 | SCAT 2973 | SCOP 2974 | SCOT 2975 | SCOW 2976 | SCRY 2977 | SCUD 2978 | SCUM 2979 | SCUP 2980 | SCUT 2981 | SEAL 2982 | SEAM 2983 | SEAR 2984 | SEAS 2985 | SEAT 2986 | SECS 2987 | SECT 2988 | SEED 2989 | SEEK 2990 | SEEL 2991 | SEEM 2992 | SEEN 2993 | SEEP 2994 | SEER 2995 | SEES 2996 | SEGO 2997 | SEGS 2998 | SEIF 2999 | SEIS 3000 | SELF 3001 | SELL 3002 | SELS 3003 | SEME 3004 | SEMI 3005 | SEND 3006 | SENE 3007 | SENT 3008 | SEPT 3009 | SERA 3010 | SERE 3011 | SERF 3012 | SERS 3013 | SETA 3014 | SETS 3015 | SETT 3016 | SEWN 3017 | SEWS 3018 | SEXT 3019 | SEXY 3020 | SHAD 3021 | SHAG 3022 | SHAH 3023 | SHAM 3024 | SHAT 3025 | SHAW 3026 | SHAY 3027 | SHEA 3028 | SHED 3029 | SHES 3030 | SHEW 3031 | SHIM 3032 | SHIN 3033 | SHIP 3034 | SHIT 3035 | SHIV 3036 | SHMO 3037 | SHOD 3038 | SHOE 3039 | SHOG 3040 | SHOO 3041 | SHOP 3042 | SHOT 3043 | SHOW 3044 | SHRI 3045 | SHUL 3046 | SHUN 3047 | SHUT 3048 | SIAL 3049 | SIBB 3050 | SIBS 3051 | SICE 3052 | SICK 3053 | SICS 3054 | SIDE 3055 | SIFT 3056 | SIGH 3057 | SIGN 3058 | SIKE 3059 | SILD 3060 | SILK 3061 | SILL 3062 | SILO 3063 | SILT 3064 | SIMA 3065 | SIMP 3066 | SIMS 3067 | SINE 3068 | SING 3069 | SINH 3070 | SINK 3071 | SINS 3072 | SIPE 3073 | SIPS 3074 | SIRE 3075 | SIRS 3076 | SITE 3077 | SITH 3078 | SITS 3079 | SIZE 3080 | SIZY 3081 | SKAG 3082 | SKAS 3083 | SKAT 3084 | SKEE 3085 | SKEG 3086 | SKEP 3087 | SKEW 3088 | SKID 3089 | SKIM 3090 | SKIN 3091 | SKIP 3092 | SKIS 3093 | SKIT 3094 | SKUA 3095 | SLAB 3096 | SLAG 3097 | SLAM 3098 | SLAP 3099 | SLAT 3100 | SLAW 3101 | SLAY 3102 | SLED 3103 | SLEW 3104 | SLID 3105 | SLIM 3106 | SLIP 3107 | SLIT 3108 | SLOB 3109 | SLOE 3110 | SLOG 3111 | SLOP 3112 | SLOT 3113 | SLOW 3114 | SLUB 3115 | SLUE 3116 | SLUG 3117 | SLUM 3118 | SLUR 3119 | SLUT 3120 | SMEW 3121 | SMIT 3122 | SMOG 3123 | SMUG 3124 | SMUT 3125 | SNAG 3126 | SNAP 3127 | SNAW 3128 | SNED 3129 | SNIB 3130 | SNIP 3131 | SNIT 3132 | SNOB 3133 | SNOG 3134 | SNOT 3135 | SNOW 3136 | SNUB 3137 | SNUG 3138 | SNYE 3139 | SOAK 3140 | SOAP 3141 | SOAR 3142 | SOBS 3143 | SOCK 3144 | SODA 3145 | SODS 3146 | SOFA 3147 | SOFT 3148 | SOIL 3149 | SOJA 3150 | SOKE 3151 | SOLA 3152 | SOLD 3153 | SOLE 3154 | SOLI 3155 | SOLO 3156 | SOLS 3157 | SOMA 3158 | SOME 3159 | SONE 3160 | SONG 3161 | SONS 3162 | SOOK 3163 | SOON 3164 | SOOT 3165 | SOPH 3166 | SOPS 3167 | SORA 3168 | SORB 3169 | SORD 3170 | SORE 3171 | SORI 3172 | SORN 3173 | SORT 3174 | SOTH 3175 | SOTS 3176 | SOUK 3177 | SOUL 3178 | SOUP 3179 | SOUR 3180 | SOUS 3181 | SOWN 3182 | SOWS 3183 | SOYA 3184 | SOYS 3185 | SPAE 3186 | SPAN 3187 | SPAR 3188 | SPAS 3189 | SPAT 3190 | SPAY 3191 | SPAZ 3192 | SPEC 3193 | SPED 3194 | SPEW 3195 | SPIC 3196 | SPIK 3197 | SPIN 3198 | SPIT 3199 | SPIV 3200 | SPOT 3201 | SPRY 3202 | SPUD 3203 | SPUE 3204 | SPUN 3205 | SPUR 3206 | SRIS 3207 | STAB 3208 | STAG 3209 | STAR 3210 | STAT 3211 | STAW 3212 | STAY 3213 | STEM 3214 | STEP 3215 | STET 3216 | STEW 3217 | STEY 3218 | STIR 3219 | STOA 3220 | STOB 3221 | STOP 3222 | STOW 3223 | STUB 3224 | STUD 3225 | STUM 3226 | STUN 3227 | STYE 3228 | SUBA 3229 | SUBS 3230 | SUCH 3231 | SUCK 3232 | SUDD 3233 | SUDS 3234 | SUED 3235 | SUER 3236 | SUES 3237 | SUET 3238 | SUGH 3239 | SUIT 3240 | SULK 3241 | SULU 3242 | SUMO 3243 | SUMP 3244 | SUMS 3245 | SUNG 3246 | SUNK 3247 | SUNN 3248 | SUNS 3249 | SUPE 3250 | SUPS 3251 | SUQS 3252 | SURA 3253 | SURD 3254 | SURE 3255 | SURF 3256 | SUSS 3257 | SWAB 3258 | SWAG 3259 | SWAM 3260 | SWAN 3261 | SWAP 3262 | SWAT 3263 | SWAY 3264 | SWIG 3265 | SWIM 3266 | SWOB 3267 | SWOP 3268 | SWOT 3269 | SWUM 3270 | SYBO 3271 | SYCE 3272 | SYKE 3273 | SYLI 3274 | SYNC 3275 | SYNE 3276 | SYPH 3277 | TABS 3278 | TABU 3279 | TACE 3280 | TACH 3281 | TACK 3282 | TACO 3283 | TACT 3284 | TADS 3285 | TAEL 3286 | TAGS 3287 | TAHR 3288 | TAIL 3289 | TAIN 3290 | TAKA 3291 | TAKE 3292 | TALA 3293 | TALC 3294 | TALE 3295 | TALI 3296 | TALK 3297 | TALL 3298 | TAME 3299 | TAMP 3300 | TAMS 3301 | TANG 3302 | TANK 3303 | TANS 3304 | TAOS 3305 | TAPA 3306 | TAPE 3307 | TAPS 3308 | TARE 3309 | TARN 3310 | TARO 3311 | TARP 3312 | TARS 3313 | TART 3314 | TASK 3315 | TASS 3316 | TATE 3317 | TATS 3318 | TAUS 3319 | TAUT 3320 | TAVS 3321 | TAWS 3322 | TAXA 3323 | TAXI 3324 | TEAK 3325 | TEAL 3326 | TEAM 3327 | TEAR 3328 | TEAS 3329 | TEAT 3330 | TEDS 3331 | TEED 3332 | TEEL 3333 | TEEM 3334 | TEEN 3335 | TEES 3336 | TEFF 3337 | TEGS 3338 | TELA 3339 | TELE 3340 | TELL 3341 | TELS 3342 | TEMP 3343 | TEND 3344 | TENS 3345 | TENT 3346 | TEPA 3347 | TERM 3348 | TERN 3349 | TEST 3350 | TETH 3351 | TETS 3352 | TEWS 3353 | TEXT 3354 | THAE 3355 | THAN 3356 | THAT 3357 | THAW 3358 | THEE 3359 | THEM 3360 | THEN 3361 | THEW 3362 | THEY 3363 | THIN 3364 | THIO 3365 | THIR 3366 | THIS 3367 | THOU 3368 | THRO 3369 | THRU 3370 | THUD 3371 | THUG 3372 | THUS 3373 | TICK 3374 | TICS 3375 | TIDE 3376 | TIDY 3377 | TIED 3378 | TIER 3379 | TIES 3380 | TIFF 3381 | TIKE 3382 | TIKI 3383 | TILE 3384 | TILL 3385 | TILS 3386 | TILT 3387 | TIME 3388 | TINE 3389 | TING 3390 | TINS 3391 | TINT 3392 | TINY 3393 | TIPI 3394 | TIPS 3395 | TIRE 3396 | TIRL 3397 | TIRO 3398 | TITI 3399 | TITS 3400 | TIVY 3401 | TOAD 3402 | TOBY 3403 | TODS 3404 | TODY 3405 | TOEA 3406 | TOED 3407 | TOES 3408 | TOFF 3409 | TOFT 3410 | TOFU 3411 | TOGA 3412 | TOGS 3413 | TOIL 3414 | TOIT 3415 | TOKE 3416 | TOLA 3417 | TOLD 3418 | TOLE 3419 | TOLL 3420 | TOLU 3421 | TOMB 3422 | TOME 3423 | TOMS 3424 | TONE 3425 | TONG 3426 | TONS 3427 | TONY 3428 | TOOK 3429 | TOOL 3430 | TOOM 3431 | TOON 3432 | TOOT 3433 | TOPE 3434 | TOPH 3435 | TOPI 3436 | TOPS 3437 | TORA 3438 | TORC 3439 | TORE 3440 | TORI 3441 | TORN 3442 | TORO 3443 | TORR 3444 | TORS 3445 | TORT 3446 | TORY 3447 | TOSH 3448 | TOSS 3449 | TOST 3450 | TOTE 3451 | TOTS 3452 | TOUR 3453 | TOUT 3454 | TOWN 3455 | TOWS 3456 | TOWY 3457 | TOYO 3458 | TOYS 3459 | TRAD 3460 | TRAM 3461 | TRAP 3462 | TRAY 3463 | TREE 3464 | TREF 3465 | TREK 3466 | TRET 3467 | TREY 3468 | TRIG 3469 | TRIM 3470 | TRIO 3471 | TRIP 3472 | TROD 3473 | TROP 3474 | TROT 3475 | TROW 3476 | TROY 3477 | TRUE 3478 | TRUG 3479 | TSAR 3480 | TSKS 3481 | TUBA 3482 | TUBE 3483 | TUBS 3484 | TUCK 3485 | TUFA 3486 | TUFF 3487 | TUFT 3488 | TUGS 3489 | TUIS 3490 | TULE 3491 | TUMP 3492 | TUNA 3493 | TUNE 3494 | TUNG 3495 | TUNS 3496 | TUPS 3497 | TURD 3498 | TURF 3499 | TURK 3500 | TURN 3501 | TUSH 3502 | TUSK 3503 | TUTS 3504 | TUTU 3505 | TWAE 3506 | TWAS 3507 | TWAT 3508 | TWEE 3509 | TWIG 3510 | TWIN 3511 | TWIT 3512 | TWOS 3513 | TYEE 3514 | TYER 3515 | TYES 3516 | TYKE 3517 | TYNE 3518 | TYPE 3519 | TYPO 3520 | TYPP 3521 | TYPY 3522 | TYRE 3523 | TYRO 3524 | TZAR 3525 | UDOS 3526 | UGHS 3527 | UGLY 3528 | UKES 3529 | ULAN 3530 | ULNA 3531 | ULUS 3532 | ULVA 3533 | UMBO 3534 | UMPS 3535 | UNAI 3536 | UNAU 3537 | UNBE 3538 | UNCI 3539 | UNCO 3540 | UNDE 3541 | UNDO 3542 | UNDY 3543 | UNIT 3544 | UNTO 3545 | UPAS 3546 | UPBY 3547 | UPDO 3548 | UPON 3549 | URBS 3550 | URDS 3551 | UREA 3552 | URGE 3553 | URIC 3554 | URNS 3555 | URSA 3556 | URUS 3557 | USED 3558 | USER 3559 | USES 3560 | UTAS 3561 | UVEA 3562 | VACS 3563 | VAGI 3564 | VAIL 3565 | VAIN 3566 | VAIR 3567 | VALE 3568 | VAMP 3569 | VANE 3570 | VANG 3571 | VANS 3572 | VARA 3573 | VARS 3574 | VARY 3575 | VASA 3576 | VASE 3577 | VAST 3578 | VATS 3579 | VATU 3580 | VAUS 3581 | VAVS 3582 | VAWS 3583 | VEAL 3584 | VEEP 3585 | VEER 3586 | VEES 3587 | VEIL 3588 | VEIN 3589 | VELA 3590 | VELD 3591 | VENA 3592 | VEND 3593 | VENT 3594 | VERA 3595 | VERB 3596 | VERT 3597 | VERY 3598 | VEST 3599 | VETO 3600 | VETS 3601 | VEXT 3602 | VIAL 3603 | VIBE 3604 | VICE 3605 | VIDE 3606 | VIED 3607 | VIER 3608 | VIES 3609 | VIEW 3610 | VIGA 3611 | VIGS 3612 | VILE 3613 | VILL 3614 | VIMS 3615 | VINA 3616 | VINE 3617 | VINO 3618 | VINY 3619 | VIOL 3620 | VIRL 3621 | VISA 3622 | VISE 3623 | VITA 3624 | VIVA 3625 | VIVE 3626 | VOES 3627 | VOID 3628 | VOLE 3629 | VOLT 3630 | VOTE 3631 | VOWS 3632 | VROW 3633 | VUGG 3634 | VUGH 3635 | VUGS 3636 | WABS 3637 | WACK 3638 | WADE 3639 | WADI 3640 | WADS 3641 | WADY 3642 | WAES 3643 | WAFF 3644 | WAFT 3645 | WAGE 3646 | WAGS 3647 | WAIF 3648 | WAIL 3649 | WAIN 3650 | WAIR 3651 | WAIT 3652 | WAKE 3653 | WALE 3654 | WALK 3655 | WALL 3656 | WALY 3657 | WAME 3658 | WAND 3659 | WANE 3660 | WANS 3661 | WANT 3662 | WANY 3663 | WAPS 3664 | WARD 3665 | WARE 3666 | WARK 3667 | WARM 3668 | WARN 3669 | WARP 3670 | WARS 3671 | WART 3672 | WARY 3673 | WASH 3674 | WASP 3675 | WAST 3676 | WATS 3677 | WATT 3678 | WAUK 3679 | WAUL 3680 | WAUR 3681 | WAVE 3682 | WAVY 3683 | WAWL 3684 | WAWS 3685 | WAXY 3686 | WAYS 3687 | WEAK 3688 | WEAL 3689 | WEAN 3690 | WEAR 3691 | WEBS 3692 | WEDS 3693 | WEED 3694 | WEEK 3695 | WEEL 3696 | WEEN 3697 | WEEP 3698 | WEER 3699 | WEES 3700 | WEET 3701 | WEFT 3702 | WEIR 3703 | WEKA 3704 | WELD 3705 | WELL 3706 | WELT 3707 | WEND 3708 | WENS 3709 | WENT 3710 | WEPT 3711 | WERE 3712 | WERT 3713 | WEST 3714 | WETS 3715 | WHAM 3716 | WHAP 3717 | WHAT 3718 | WHEE 3719 | WHEN 3720 | WHET 3721 | WHEW 3722 | WHEY 3723 | WHID 3724 | WHIG 3725 | WHIM 3726 | WHIN 3727 | WHIP 3728 | WHIR 3729 | WHIT 3730 | WHIZ 3731 | WHOA 3732 | WHOM 3733 | WHOP 3734 | WHYS 3735 | WICH 3736 | WICK 3737 | WIDE 3738 | WIFE 3739 | WIGS 3740 | WILD 3741 | WILE 3742 | WILL 3743 | WILT 3744 | WILY 3745 | WIMP 3746 | WIND 3747 | WINE 3748 | WING 3749 | WINK 3750 | WINO 3751 | WINS 3752 | WINY 3753 | WIPE 3754 | WIRE 3755 | WIRY 3756 | WISE 3757 | WISH 3758 | WISP 3759 | WISS 3760 | WIST 3761 | WITE 3762 | WITH 3763 | WITS 3764 | WIVE 3765 | WOAD 3766 | WOES 3767 | WOGS 3768 | WOKE 3769 | WOKS 3770 | WOLD 3771 | WOLF 3772 | WOMB 3773 | WONK 3774 | WONS 3775 | WONT 3776 | WOOD 3777 | WOOF 3778 | WOOL 3779 | WOOS 3780 | WOPS 3781 | WORD 3782 | WORE 3783 | WORK 3784 | WORM 3785 | WORN 3786 | WORT 3787 | WOST 3788 | WOTS 3789 | WOVE 3790 | WOWS 3791 | WRAP 3792 | WREN 3793 | WRIT 3794 | WUSS 3795 | WYCH 3796 | WYES 3797 | WYLE 3798 | WYND 3799 | WYNN 3800 | WYNS 3801 | WYTE 3802 | XYST 3803 | YACK 3804 | YAFF 3805 | YAGI 3806 | YAKS 3807 | YALD 3808 | YAMS 3809 | YANG 3810 | YANK 3811 | YAPS 3812 | YARD 3813 | YARE 3814 | YARN 3815 | YAUD 3816 | YAUP 3817 | YAWL 3818 | YAWN 3819 | YAWP 3820 | YAWS 3821 | YAYS 3822 | YEAH 3823 | YEAN 3824 | YEAR 3825 | YEAS 3826 | YECH 3827 | YEGG 3828 | YELD 3829 | YELK 3830 | YELL 3831 | YELP 3832 | YENS 3833 | YERK 3834 | YETI 3835 | YETT 3836 | YEUK 3837 | YEWS 3838 | YIDS 3839 | YILL 3840 | YINS 3841 | YIPE 3842 | YIPS 3843 | YIRD 3844 | YIRR 3845 | YLEM 3846 | YOBS 3847 | YOCK 3848 | YODH 3849 | YODS 3850 | YOGA 3851 | YOGH 3852 | YOGI 3853 | YOKE 3854 | YOKS 3855 | YOLK 3856 | YOND 3857 | YONI 3858 | YORE 3859 | YOUR 3860 | YOWE 3861 | YOWL 3862 | YOWS 3863 | YUAN 3864 | YUCA 3865 | YUCH 3866 | YUCK 3867 | YUGA 3868 | YUKS 3869 | YULE 3870 | YUPS 3871 | YURT 3872 | YWIS 3873 | ZAGS 3874 | ZANY 3875 | ZAPS 3876 | ZARF 3877 | ZEAL 3878 | ZEBU 3879 | ZEDS 3880 | ZEES 3881 | ZEIN 3882 | ZEKS 3883 | ZERK 3884 | ZERO 3885 | ZEST 3886 | ZETA 3887 | ZIGS 3888 | ZILL 3889 | ZINC 3890 | ZING 3891 | ZINS 3892 | ZIPS 3893 | ZITI 3894 | ZITS 3895 | ZOEA 3896 | ZOIC 3897 | ZONE 3898 | ZONK 3899 | ZOOM 3900 | ZOON 3901 | ZOOS 3902 | ZORI 3903 | ZYME 3904 | -------------------------------------------------------------------------------- /2022数据结构与算法B/数据文件/pi50.4.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据文件/pi50.4.bin -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W01.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W01.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W02.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W02.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W03.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W03.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W04.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W04.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W05.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W06.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W06.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W07(清明假期).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W07(清明假期).pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W08.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W08.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W09.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W09.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W10.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W11(五一假期).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W11(五一假期).pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W12.pdf -------------------------------------------------------------------------------- /2022数据结构与算法B/数据结构与算法-W13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/2022数据结构与算法B/数据结构与算法-W13.pdf -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter1/fraction.py: -------------------------------------------------------------------------------- 1 | def gcd(m,n): 2 | while m%n != 0: 3 | oldm = m 4 | oldn = n 5 | 6 | m = oldn 7 | n = oldm%oldn 8 | return n 9 | 10 | class Fraction: 11 | def __init__(self,top,bottom): 12 | self.num = top 13 | self.den = bottom 14 | 15 | def __str__(self): 16 | return str(self.num)+"/"+str(self.den) 17 | 18 | def show(self): 19 | print(self.num,"/",self.den) 20 | 21 | def __add__(self,otherfraction): 22 | newnum = self.num*otherfraction.den + \ 23 | self.den*otherfraction.num 24 | newden = self.den * otherfraction.den 25 | common = gcd(newnum,newden) 26 | return Fraction(newnum//common,newden//common) 27 | 28 | def __eq__(self, other): 29 | firstnum = self.num * other.den 30 | secondnum = other.num * self.den 31 | 32 | return firstnum == secondnum 33 | 34 | x = Fraction(1,2) 35 | y = Fraction(2,3) 36 | print(x+y) 37 | print(x == y) 38 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter1/logicgates.py: -------------------------------------------------------------------------------- 1 | class LogicGate: 2 | 3 | def __init__(self,n): 4 | self.name = n 5 | self.output = None 6 | 7 | def getName(self): 8 | return self.name 9 | 10 | def getOutput(self): 11 | self.output = self.performGateLogic() 12 | return self.output 13 | 14 | 15 | class BinaryGate(LogicGate): 16 | 17 | def __init__(self,n): 18 | LogicGate.__init__(self,n) 19 | 20 | self.pinA = None 21 | self.pinB = None 22 | 23 | def getPinA(self): 24 | if self.pinA == None: 25 | return int(input("Enter Pin A input for gate "+self.getName()+"-->")) 26 | else: 27 | return self.pinA.getFrom().getOutput() 28 | 29 | def getPinB(self): 30 | if self.pinB == None: 31 | return int(input("Enter Pin B input for gate "+self.getName()+"-->")) 32 | else: 33 | return self.pinB.getFrom().getOutput() 34 | 35 | def setNextPin(self,source): 36 | if self.pinA == None: 37 | self.pinA = source 38 | else: 39 | if self.pinB == None: 40 | self.pinB = source 41 | else: 42 | print("Cannot Connect: NO EMPTY PINS on this gate") 43 | 44 | 45 | class AndGate(BinaryGate): 46 | 47 | def __init__(self,n): 48 | BinaryGate.__init__(self,n) 49 | 50 | def performGateLogic(self): 51 | 52 | a = self.getPinA() 53 | b = self.getPinB() 54 | if a==1 and b==1: 55 | return 1 56 | else: 57 | return 0 58 | 59 | class OrGate(BinaryGate): 60 | 61 | def __init__(self,n): 62 | BinaryGate.__init__(self,n) 63 | 64 | def performGateLogic(self): 65 | 66 | a = self.getPinA() 67 | b = self.getPinB() 68 | if a ==1 or b==1: 69 | return 1 70 | else: 71 | return 0 72 | 73 | class UnaryGate(LogicGate): 74 | 75 | def __init__(self,n): 76 | LogicGate.__init__(self,n) 77 | 78 | self.pin = None 79 | 80 | def getPin(self): 81 | if self.pin == None: 82 | return int(input("Enter Pin input for gate "+self.getName()+"-->")) 83 | else: 84 | return self.pin.getFrom().getOutput() 85 | 86 | def setNextPin(self,source): 87 | if self.pin == None: 88 | self.pin = source 89 | else: 90 | print("Cannot Connect: NO EMPTY PINS on this gate") 91 | 92 | 93 | class NotGate(UnaryGate): 94 | 95 | def __init__(self,n): 96 | UnaryGate.__init__(self,n) 97 | 98 | def performGateLogic(self): 99 | if self.getPin(): 100 | return 0 101 | else: 102 | return 1 103 | 104 | 105 | class Connector: 106 | 107 | def __init__(self, fgate, tgate): 108 | self.fromgate = fgate 109 | self.togate = tgate 110 | 111 | tgate.setNextPin(self) 112 | 113 | def getFrom(self): 114 | return self.fromgate 115 | 116 | def getTo(self): 117 | return self.togate 118 | 119 | 120 | 121 | def main1(): 122 | g1 = AndGate("G1") 123 | 124 | print(g1.getOutput()) 125 | 126 | 127 | def main2(): 128 | g1 = AndGate("G1") 129 | g2 = AndGate("G2") 130 | g3 = OrGate("G3") 131 | g4 = NotGate("G4") 132 | c1 = Connector(g1,g3) 133 | c2 = Connector(g2,g3) 134 | c3 = Connector(g3,g4) 135 | print(g4.getOutput()) 136 | 137 | main1() 138 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/baseconverter.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.stack import Stack 2 | 3 | def baseConverter(decNumber,base): 4 | digits = "0123456789ABCDEF" 5 | 6 | remstack = Stack() 7 | 8 | while decNumber > 0: 9 | rem = decNumber % base 10 | remstack.push(rem) 11 | decNumber = decNumber // base 12 | 13 | newString = "" 14 | while not remstack.isEmpty(): 15 | newString = newString + digits[remstack.pop()] 16 | 17 | return newString 18 | 19 | print(baseConverter(25,2)) 20 | print(baseConverter(25,16)) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/hotpotato.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.queue import Queue 2 | 3 | def hotPotato(namelist, num): 4 | simqueue = Queue() 5 | for name in namelist: 6 | simqueue.enqueue(name) 7 | 8 | while simqueue.size() > 1: 9 | for i in range(num): 10 | simqueue.enqueue(simqueue.dequeue()) 11 | 12 | simqueue.dequeue() 13 | 14 | return simqueue.dequeue() 15 | 16 | print(hotPotato(["Bill","David","Susan","Jane","Kent","Brad"],7)) 17 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/infixtopostfix.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.stack import Stack 2 | 3 | def infixToPostfix(infixexpr): 4 | prec = {} 5 | prec["*"] = 3 6 | prec["/"] = 3 7 | prec["+"] = 2 8 | prec["-"] = 2 9 | prec["("] = 1 10 | opStack = Stack() 11 | postfixList = [] 12 | tokenList = infixexpr.split() 13 | 14 | for token in tokenList: 15 | if token in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or token in "0123456789": 16 | postfixList.append(token) 17 | elif token == '(': 18 | opStack.push(token) 19 | elif token == ')': 20 | topToken = opStack.pop() 21 | while topToken != '(': 22 | postfixList.append(topToken) 23 | topToken = opStack.pop() 24 | else: 25 | while (not opStack.isEmpty()) and \ 26 | (prec[opStack.peek()] >= prec[token]): 27 | postfixList.append(opStack.pop()) 28 | opStack.push(token) 29 | 30 | while not opStack.isEmpty(): 31 | postfixList.append(opStack.pop()) 32 | return " ".join(postfixList) 33 | 34 | print(infixToPostfix("A * B + C * D")) 35 | print(infixToPostfix("( A + B ) * C - ( D - E ) * ( F + G )")) 36 | 37 | def postfixEval(postfixExpr): 38 | operandStack = Stack() 39 | tokenList = postfixExpr.split() 40 | 41 | for token in tokenList: 42 | if token in "0123456789": 43 | operandStack.push(int(token)) 44 | else: 45 | operand2 = operandStack.pop() 46 | operand1 = operandStack.pop() 47 | result = doMath(token,operand1,operand2) 48 | operandStack.push(result) 49 | return operandStack.pop() 50 | 51 | def doMath(op, op1, op2): 52 | if op == "*": 53 | return op1 * op2 54 | elif op == "/": 55 | return op1 / op2 56 | elif op == "+": 57 | return op1 + op2 58 | else: 59 | return op1 - op2 60 | 61 | print(postfixEval('7 8 + 3 2 + /')) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/orderedlist.py: -------------------------------------------------------------------------------- 1 | class Node: 2 | def __init__(self,initdata): 3 | self.data = initdata 4 | self.next = None 5 | 6 | def getData(self): 7 | return self.data 8 | 9 | def getNext(self): 10 | return self.next 11 | 12 | def setData(self,newdata): 13 | self.data = newdata 14 | 15 | def setNext(self,newnext): 16 | self.next = newnext 17 | 18 | 19 | class OrderedList: 20 | def __init__(self): 21 | self.head = None 22 | 23 | def search(self,item): 24 | current = self.head 25 | found = False 26 | stop = False 27 | while current != None and not found and not stop: 28 | if current.getData() == item: 29 | found = True 30 | else: 31 | if current.getData() > item: 32 | stop = True 33 | else: 34 | current = current.getNext() 35 | 36 | return found 37 | 38 | def add(self,item): 39 | current = self.head 40 | previous = None 41 | stop = False 42 | while current != None and not stop: 43 | if current.getData() > item: 44 | stop = True 45 | else: 46 | previous = current 47 | current = current.getNext() 48 | 49 | temp = Node(item) 50 | if previous == None: 51 | temp.setNext(self.head) 52 | self.head = temp 53 | else: 54 | temp.setNext(current) 55 | previous.setNext(temp) 56 | 57 | def isEmpty(self): 58 | return self.head == None 59 | 60 | def length(self): 61 | current = self.head 62 | count = 0 63 | while current != None: 64 | count = count + 1 65 | current = current.getNext() 66 | 67 | return count 68 | 69 | def traverse(self): 70 | current = self.head 71 | while current != None: 72 | print(current.getData()) 73 | current = current.getNext() 74 | 75 | 76 | mylist = OrderedList() 77 | mylist.add(31) 78 | mylist.add(77) 79 | mylist.add(17) 80 | mylist.add(93) 81 | mylist.add(26) 82 | mylist.add(54) 83 | 84 | print(mylist.length()) 85 | print(mylist.search(93)) 86 | print(mylist.search(100)) 87 | mylist.traverse() -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/palindromechecker.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.deque import Deque 2 | 3 | def palchecker(aString): 4 | chardeque = Deque() 5 | 6 | for ch in aString: 7 | chardeque.addRear(ch) 8 | 9 | stillEqual = True 10 | 11 | while chardeque.size() > 1 and stillEqual: 12 | first = chardeque.removeFront() 13 | last = chardeque.removeRear() 14 | if first != last: 15 | stillEqual = False 16 | 17 | return stillEqual 18 | 19 | print(palchecker("lsdkjfskf")) 20 | print(palchecker("radar")) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/parcheckers.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.stack import Stack 2 | 3 | def parChecker(symbolString): 4 | s = Stack() 5 | balanced = True 6 | index = 0 7 | while index < len(symbolString) and balanced: 8 | symbol = symbolString[index] 9 | if symbol == "(": 10 | s.push(symbol) 11 | else: 12 | if s.isEmpty(): 13 | balanced = False 14 | else: 15 | s.pop() 16 | 17 | index = index + 1 18 | 19 | if balanced and s.isEmpty(): 20 | return True 21 | else: 22 | return False 23 | 24 | print(parChecker('((()))')) 25 | print(parChecker('(()')) 26 | 27 | def parChecker(symbolString): 28 | s = Stack() 29 | balanced = True 30 | index = 0 31 | while index < len(symbolString) and balanced: 32 | symbol = symbolString[index] 33 | if symbol in "([{": 34 | s.push(symbol) 35 | else: 36 | if s.isEmpty(): 37 | balanced = False 38 | else: 39 | top = s.pop() 40 | if not matches(top,symbol): 41 | balanced = False 42 | index = index + 1 43 | if balanced and s.isEmpty(): 44 | return True 45 | else: 46 | return False 47 | 48 | def matches(open,close): 49 | opens = "([{" 50 | closers = ")]}" 51 | return opens.index(open) == closers.index(close) 52 | 53 | 54 | print(parChecker('{{([][])}()}')) 55 | print(parChecker('[{()]')) 56 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/printersimulation.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.queue import Queue 2 | 3 | import random 4 | 5 | class Printer: 6 | def __init__(self, ppm): 7 | self.pagerate = ppm 8 | self.currentTask = None 9 | self.timeRemaining = 0 10 | 11 | def tick(self): 12 | if self.currentTask != None: 13 | self.timeRemaining = self.timeRemaining - 1 14 | if self.timeRemaining <= 0: 15 | self.currentTask = None 16 | 17 | def busy(self): 18 | if self.currentTask != None: 19 | return True 20 | else: 21 | return False 22 | 23 | def startNext(self,newtask): 24 | self.currentTask = newtask 25 | self.timeRemaining = newtask.getPages() \ 26 | * 60/self.pagerate 27 | 28 | class Task: 29 | def __init__(self,time): 30 | self.timestamp = time 31 | self.pages = random.randrange(1,21) 32 | 33 | def getStamp(self): 34 | return self.timestamp 35 | 36 | def getPages(self): 37 | return self.pages 38 | 39 | def waitTime(self, currenttime): 40 | return currenttime - self.timestamp 41 | 42 | 43 | def simulation(numSeconds, pagesPerMinute): 44 | 45 | labprinter = Printer(pagesPerMinute) 46 | printQueue = Queue() 47 | waitingtimes = [] 48 | 49 | for currentSecond in range(numSeconds): 50 | 51 | if newPrintTask(): 52 | task = Task(currentSecond) 53 | printQueue.enqueue(task) 54 | 55 | if (not labprinter.busy()) and \ 56 | (not printQueue.isEmpty()): 57 | nexttask = printQueue.dequeue() 58 | waitingtimes.append( \ 59 | nexttask.waitTime(currentSecond)) 60 | labprinter.startNext(nexttask) 61 | 62 | labprinter.tick() 63 | 64 | averageWait=sum(waitingtimes)/len(waitingtimes) 65 | print("Average Wait %6.2f secs %3d tasks remaining."\ 66 | %(averageWait,printQueue.size())) 67 | 68 | def newPrintTask(): 69 | num = random.randrange(1,181) 70 | if num == 180: 71 | return True 72 | else: 73 | return False 74 | 75 | for i in range(10): 76 | simulation(3600,5) 77 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/stacktest.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.stack import Stack 2 | 3 | s = Stack() 4 | 5 | s.push(33) 6 | print(s.size()) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter3/unorderedlist.py: -------------------------------------------------------------------------------- 1 | class Node: 2 | def __init__(self,initdata): 3 | self.data = initdata 4 | self.next = None 5 | 6 | def getData(self): 7 | return self.data 8 | 9 | def getNext(self): 10 | return self.next 11 | 12 | def setData(self,newdata): 13 | self.data = newdata 14 | 15 | def setNext(self,newnext): 16 | self.next = newnext 17 | 18 | 19 | class UnorderedList: 20 | 21 | def __init__(self): 22 | self.head = None 23 | 24 | def isEmpty(self): 25 | return self.head == None 26 | 27 | def add(self,item): 28 | temp = Node(item) 29 | temp.setNext(self.head) 30 | self.head = temp 31 | 32 | def length(self): 33 | current = self.head 34 | count = 0 35 | while current != None: 36 | count = count + 1 37 | current = current.getNext() 38 | 39 | return count 40 | 41 | def search(self,item): 42 | current = self.head 43 | found = False 44 | while current != None and not found: 45 | if current.getData() == item: 46 | found = True 47 | else: 48 | current = current.getNext() 49 | 50 | return found 51 | 52 | def remove(self,item): 53 | current = self.head 54 | previous = None 55 | found = False 56 | while not found: 57 | if current.getData() == item: 58 | found = True 59 | else: 60 | previous = current 61 | current = current.getNext() 62 | 63 | if previous == None: 64 | self.head = current.getNext() 65 | else: 66 | previous.setNext(current.getNext()) 67 | 68 | mylist = UnorderedList() 69 | 70 | mylist.add(31) 71 | mylist.add(77) 72 | mylist.add(17) 73 | mylist.add(93) 74 | mylist.add(26) 75 | mylist.add(54) 76 | 77 | print(mylist.length()) 78 | print(mylist.search(93)) 79 | print(mylist.search(100)) 80 | 81 | mylist.add(100) 82 | print(mylist.search(100)) 83 | print(mylist.length()) 84 | 85 | mylist.remove(54) 86 | print(mylist.length()) 87 | mylist.remove(93) 88 | print(mylist.length()) 89 | mylist.remove(31) 90 | print(mylist.length()) 91 | print(mylist.search(93)) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/makingchange.py: -------------------------------------------------------------------------------- 1 | def dpMakeChange(coinValueList,change,minCoins,coinsUsed): 2 | for cents in range(change+1): 3 | coinCount = cents 4 | newCoin = 1 5 | for j in [c for c in coinValueList if c <= cents]: 6 | if minCoins[cents-j] + 1 < coinCount: 7 | coinCount = minCoins[cents-j]+1 8 | newCoin = j 9 | minCoins[cents] = coinCount 10 | coinsUsed[cents] = newCoin 11 | return minCoins[change] 12 | 13 | def printCoins(coinsUsed,change): 14 | coin = change 15 | while coin > 0: 16 | thisCoin = coinsUsed[coin] 17 | print(thisCoin) 18 | coin = coin - thisCoin 19 | 20 | def main(): 21 | amnt = 63 22 | clist = [1,5,10,21,25] 23 | coinsUsed = [0]*(amnt+1) 24 | coinCount = [0]*(amnt+1) 25 | 26 | print("Making change for",amnt,"requires") 27 | print(dpMakeChange(clist,amnt,coinCount,coinsUsed),"coins") 28 | print("They are:") 29 | printCoins(coinsUsed,amnt) 30 | print("The used list is as follows:") 31 | print(coinsUsed) 32 | 33 | main() 34 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/maze.py: -------------------------------------------------------------------------------- 1 | import turtle 2 | 3 | PART_OF_PATH = 'O' 4 | TRIED = '.' 5 | OBSTACLE = '+' 6 | DEAD_END = '-' 7 | 8 | class Maze: 9 | def __init__(self,mazeFileName): 10 | rowsInMaze = 0 11 | columnsInMaze = 0 12 | self.mazelist = [] 13 | mazeFile = open(mazeFileName,'r') 14 | rowsInMaze = 0 15 | for line in mazeFile: 16 | rowList = [] 17 | col = 0 18 | for ch in line[:-1]: 19 | rowList.append(ch) 20 | if ch == 'S': 21 | self.startRow = rowsInMaze 22 | self.startCol = col 23 | col = col + 1 24 | rowsInMaze = rowsInMaze + 1 25 | self.mazelist.append(rowList) 26 | columnsInMaze = len(rowList) 27 | 28 | self.rowsInMaze = rowsInMaze 29 | self.columnsInMaze = columnsInMaze 30 | self.xTranslate = -columnsInMaze/2 31 | self.yTranslate = rowsInMaze/2 32 | self.t = turtle.Turtle() 33 | self.t.shape('turtle') 34 | self.wn = turtle.Screen() 35 | self.wn.setworldcoordinates(-(columnsInMaze-1)/2-.5,-(rowsInMaze-1)/2-.5,(columnsInMaze-1)/2+.5,(rowsInMaze-1)/2+.5) 36 | 37 | def drawMaze(self): 38 | self.t.speed(10) 39 | for y in range(self.rowsInMaze): 40 | for x in range(self.columnsInMaze): 41 | if self.mazelist[y][x] == OBSTACLE: 42 | self.drawCenteredBox(x+self.xTranslate,-y+self.yTranslate,'orange') 43 | self.t.color('black') 44 | self.t.fillcolor('blue') 45 | 46 | def drawCenteredBox(self,x,y,color): 47 | self.t.up() 48 | self.t.goto(x-.5,y-.5) 49 | self.t.color(color) 50 | self.t.fillcolor(color) 51 | self.t.setheading(90) 52 | self.t.down() 53 | self.t.begin_fill() 54 | for i in range(4): 55 | self.t.forward(1) 56 | self.t.right(90) 57 | self.t.end_fill() 58 | 59 | def moveTurtle(self,x,y): 60 | self.t.up() 61 | self.t.setheading(self.t.towards(x+self.xTranslate,-y+self.yTranslate)) 62 | self.t.goto(x+self.xTranslate,-y+self.yTranslate) 63 | 64 | def dropBreadcrumb(self,color): 65 | self.t.dot(10,color) 66 | 67 | def updatePosition(self,row,col,val=None): 68 | if val: 69 | self.mazelist[row][col] = val 70 | self.moveTurtle(col,row) 71 | 72 | if val == PART_OF_PATH: 73 | color = 'green' 74 | elif val == OBSTACLE: 75 | color = 'red' 76 | elif val == TRIED: 77 | color = 'black' 78 | elif val == DEAD_END: 79 | color = 'red' 80 | else: 81 | color = None 82 | 83 | if color: 84 | self.dropBreadcrumb(color) 85 | 86 | def isExit(self,row,col): 87 | return (row == 0 or 88 | row == self.rowsInMaze-1 or 89 | col == 0 or 90 | col == self.columnsInMaze-1 ) 91 | 92 | def __getitem__(self,idx): 93 | return self.mazelist[idx] 94 | 95 | 96 | def searchFrom(maze, startRow, startColumn): 97 | # try each of four directions from this point until we find a way out. 98 | # base Case return values: 99 | # 1. We have run into an obstacle, return false 100 | maze.updatePosition(startRow, startColumn) 101 | if maze[startRow][startColumn] == OBSTACLE : 102 | return False 103 | # 2. We have found a square that has already been explored 104 | if maze[startRow][startColumn] == TRIED or maze[startRow][startColumn] == DEAD_END: 105 | return False 106 | # 3. We have found an outside edge not occupied by an obstacle 107 | if maze.isExit(startRow,startColumn): 108 | maze.updatePosition(startRow, startColumn, PART_OF_PATH) 109 | return True 110 | maze.updatePosition(startRow, startColumn, TRIED) 111 | # Otherwise, use logical short circuiting to try each direction 112 | # in turn (if needed) 113 | found = searchFrom(maze, startRow-1, startColumn) or \ 114 | searchFrom(maze, startRow+1, startColumn) or \ 115 | searchFrom(maze, startRow, startColumn-1) or \ 116 | searchFrom(maze, startRow, startColumn+1) 117 | if found: 118 | maze.updatePosition(startRow, startColumn, PART_OF_PATH) 119 | else: 120 | maze.updatePosition(startRow, startColumn, DEAD_END) 121 | return found 122 | 123 | 124 | myMaze = Maze('maze2.txt') 125 | myMaze.drawMaze() 126 | myMaze.updatePosition(myMaze.startRow,myMaze.startCol) 127 | 128 | searchFrom(myMaze, myMaze.startRow, myMaze.startCol) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/maze2.txt: -------------------------------------------------------------------------------- 1 | ++++++++++++++++++++++ 2 | + + ++ ++ + 3 | + ++++++++++ 4 | + + ++ ++++ +++ ++ 5 | + + + + ++ +++ + 6 | + ++ ++ + + 7 | +++++ + + ++ + + 8 | +++++ +++ + + ++ + 9 | + + + S+ + + 10 | +++++ + + + + + + 11 | ++++++++++++++++++++++ 12 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/recursiveconversion.py: -------------------------------------------------------------------------------- 1 | def toStr(n,base): 2 | convertString = "0123456789ABCDEF" 3 | if n < base: 4 | return convertString[n] 5 | else: 6 | return toStr(n//base,base) + convertString[n%base] 7 | 8 | print(toStr(1453,16)) 9 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/recursivelistsummation.py: -------------------------------------------------------------------------------- 1 | def listsum(numList): 2 | if len(numList) == 1: 3 | return numList[0] 4 | else: 5 | return numList[0] + listsum(numList[1:]) 6 | 7 | print(listsum([1,3,5,7,9])) 8 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/recursivespiral.py: -------------------------------------------------------------------------------- 1 | import turtle 2 | 3 | myTurtle = turtle.Turtle() 4 | myWin = turtle.Screen() 5 | 6 | def drawSpiral(myTurtle, lineLen): 7 | if lineLen > 0: 8 | myTurtle.forward(lineLen) 9 | myTurtle.right(90) 10 | drawSpiral(myTurtle,lineLen-5) 11 | 12 | drawSpiral(myTurtle,100) 13 | myWin.exitonclick() -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/recursivetree.py: -------------------------------------------------------------------------------- 1 | import turtle 2 | 3 | def tree(branchLen,t): 4 | if branchLen > 5: 5 | t.forward(branchLen) 6 | t.right(20) 7 | tree(branchLen-15,t) 8 | t.left(40) 9 | tree(branchLen-15,t) 10 | t.right(20) 11 | t.backward(branchLen) 12 | 13 | def main(): 14 | t = turtle.Turtle() 15 | myWin = turtle.Screen() 16 | t.left(90) 17 | t.up() 18 | t.backward(100) 19 | t.down() 20 | t.color("green") 21 | tree(75,t) 22 | myWin.exitonclick() 23 | 24 | main() 25 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/recursivetriangle.py: -------------------------------------------------------------------------------- 1 | import turtle 2 | 3 | def drawTriangle(points,color,myTurtle): 4 | myTurtle.fillcolor(color) 5 | myTurtle.up() 6 | myTurtle.goto(points[0][0],points[0][1]) 7 | myTurtle.down() 8 | myTurtle.begin_fill() 9 | myTurtle.goto(points[1][0],points[1][1]) 10 | myTurtle.goto(points[2][0],points[2][1]) 11 | myTurtle.goto(points[0][0],points[0][1]) 12 | myTurtle.end_fill() 13 | 14 | def getMid(p1,p2): 15 | return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2) 16 | 17 | def sierpinski(points,degree,myTurtle): 18 | colormap = ['blue','red','green','white','yellow', 19 | 'violet','orange'] 20 | drawTriangle(points,colormap[degree],myTurtle) 21 | if degree > 0: 22 | sierpinski([points[0], 23 | getMid(points[0], points[1]), 24 | getMid(points[0], points[2])], 25 | degree-1, myTurtle) 26 | sierpinski([points[1], 27 | getMid(points[0], points[1]), 28 | getMid(points[1], points[2])], 29 | degree-1, myTurtle) 30 | sierpinski([points[2], 31 | getMid(points[2], points[1]), 32 | getMid(points[0], points[2])], 33 | degree-1, myTurtle) 34 | 35 | def main(): 36 | myTurtle = turtle.Turtle() 37 | myWin = turtle.Screen() 38 | myPoints = [[-100,-50],[0,100],[100,-50]] 39 | sierpinski(myPoints,3,myTurtle) 40 | myWin.exitonclick() 41 | 42 | main() 43 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter4/towerofhanoi.py: -------------------------------------------------------------------------------- 1 | def moveTower(height,fromPole, toPole, withPole): 2 | if height >= 1: 3 | moveTower(height-1,fromPole,withPole,toPole) 4 | moveDisk(fromPole,toPole) 5 | moveTower(height-1,withPole,toPole,fromPole) 6 | 7 | def moveDisk(fp,tp): 8 | print("moving disk from",fp,"to",tp) 9 | 10 | moveTower(3,"A","B","C") 11 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/binarysearch.py: -------------------------------------------------------------------------------- 1 | def binarySearch(alist, item): 2 | first = 0 3 | last = len(alist)-1 4 | found = False 5 | 6 | while first<=last and not found: 7 | midpoint = (first + last)//2 8 | if alist[midpoint] == item: 9 | found = True 10 | else: 11 | if item < alist[midpoint]: 12 | last = midpoint-1 13 | else: 14 | first = midpoint+1 15 | 16 | return found 17 | 18 | testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,] 19 | print(binarySearch(testlist, 3)) 20 | print(binarySearch(testlist, 13)) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/binarysearchrecursive.py: -------------------------------------------------------------------------------- 1 | def binarySearch(alist, item): 2 | if len(alist) == 0: 3 | return False 4 | else: 5 | midpoint = len(alist)//2 6 | if alist[midpoint]==item: 7 | return True 8 | else: 9 | if itemalist[i+1]: 5 | temp = alist[i] 6 | alist[i] = alist[i+1] 7 | alist[i+1] = temp 8 | 9 | alist = [54,26,93,17,77,31,44,55,20] 10 | bubbleSort(alist) 11 | print(alist) 12 | 13 | def shortBubbleSort(alist): 14 | exchanges = True 15 | passnum = len(alist)-1 16 | while passnum > 0 and exchanges: 17 | exchanges = False 18 | for i in range(passnum): 19 | if alist[i]>alist[i+1]: 20 | exchanges = True 21 | temp = alist[i] 22 | alist[i] = alist[i+1] 23 | alist[i+1] = temp 24 | passnum = passnum-1 25 | 26 | alist=[20,30,40,90,50,60,70,80,100,110] 27 | shortBubbleSort(alist) 28 | print(alist) 29 | 30 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/hashing.py: -------------------------------------------------------------------------------- 1 | class HashTable: 2 | def __init__(self): 3 | self.size = 11 4 | self.slots = [None] * self.size 5 | self.data = [None] * self.size 6 | 7 | def put(self,key,data): 8 | hashvalue = self.hashfunction(key,len(self.slots)) 9 | 10 | if self.slots[hashvalue] == None: 11 | self.slots[hashvalue] = key 12 | self.data[hashvalue] = data 13 | else: 14 | if self.slots[hashvalue] == key: 15 | self.data[hashvalue] = data #replace 16 | else: 17 | nextslot = self.rehash(hashvalue,len(self.slots)) 18 | while self.slots[nextslot] != None and \ 19 | self.slots[nextslot] != key: 20 | nextslot = self.rehash(nextslot,len(self.slots)) 21 | 22 | if self.slots[nextslot] == None: 23 | self.slots[nextslot]=key 24 | self.data[nextslot]=data 25 | else: 26 | self.data[nextslot] = data #replace 27 | 28 | def hashfunction(self,key,size): 29 | return key%size 30 | 31 | def rehash(self,oldhash,size): 32 | return (oldhash+1)%size 33 | 34 | def get(self,key): 35 | startslot = self.hashfunction(key,len(self.slots)) 36 | 37 | data = None 38 | stop = False 39 | found = False 40 | position = startslot 41 | while self.slots[position] != None and \ 42 | not found and not stop: 43 | if self.slots[position] == key: 44 | found = True 45 | data = self.data[position] 46 | else: 47 | position=self.rehash(position,len(self.slots)) 48 | if position == startslot: 49 | stop = True 50 | return data 51 | 52 | def __getitem__(self,key): 53 | return self.get(key) 54 | 55 | def __setitem__(self,key,data): 56 | self.put(key,data) 57 | 58 | H=HashTable() 59 | H[54]="cat" 60 | H[26]="dog" 61 | H[93]="lion" 62 | H[17]="tiger" 63 | H[77]="bird" 64 | H[31]="cow" 65 | H[44]="goat" 66 | H[55]="pig" 67 | H[20]="chicken" 68 | print(H.slots) 69 | print(H.data) 70 | 71 | print(H[20]) 72 | 73 | print(H[17]) 74 | H[20]='duck' 75 | print(H[20]) 76 | print(H[99]) 77 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/insertionsort.py: -------------------------------------------------------------------------------- 1 | def insertionSort(alist): 2 | for index in range(1,len(alist)): 3 | 4 | currentvalue = alist[index] 5 | position = index 6 | 7 | while position>0 and alist[position-1]>currentvalue: 8 | alist[position]=alist[position-1] 9 | position = position-1 10 | 11 | alist[position]=currentvalue 12 | 13 | alist = [54,26,93,17,77,31,44,55,20] 14 | insertionSort(alist) 15 | print(alist) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/mergesort.py: -------------------------------------------------------------------------------- 1 | def mergeSort(alist): 2 | print("Splitting ",alist) 3 | if len(alist)>1: 4 | mid = len(alist)//2 5 | lefthalf = alist[:mid] 6 | righthalf = alist[mid:] 7 | 8 | mergeSort(lefthalf) 9 | mergeSort(righthalf) 10 | 11 | i=0 12 | j=0 13 | k=0 14 | while i item: 10 | stop = True 11 | else: 12 | pos = pos+1 13 | 14 | return found 15 | 16 | testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,] 17 | print(orderedSequentialSearch(testlist, 3)) 18 | print(orderedSequentialSearch(testlist, 13)) 19 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/quicksort.py: -------------------------------------------------------------------------------- 1 | def quickSort(alist): 2 | quickSortHelper(alist,0,len(alist)-1) 3 | 4 | def quickSortHelper(alist,first,last): 5 | if first= pivotvalue and \ 27 | rightmark >= leftmark: 28 | rightmark = rightmark -1 29 | 30 | if rightmark < leftmark: 31 | done = True 32 | else: 33 | temp = alist[leftmark] 34 | alist[leftmark] = alist[rightmark] 35 | alist[rightmark] = temp 36 | 37 | temp = alist[first] 38 | alist[first] = alist[rightmark] 39 | alist[rightmark] = temp 40 | 41 | 42 | return rightmark 43 | 44 | alist = [54,26,93,17,77,31,44,55,20] 45 | quickSort(alist) 46 | print(alist) 47 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/selectionsort.py: -------------------------------------------------------------------------------- 1 | def selectionSort(alist): 2 | for fillslot in range(len(alist)-1,0,-1): 3 | positionOfMax=0 4 | for location in range(1,fillslot+1): 5 | if alist[location]>alist[positionOfMax]: 6 | positionOfMax = location 7 | 8 | temp = alist[fillslot] 9 | alist[fillslot] = alist[positionOfMax] 10 | alist[positionOfMax] = temp 11 | 12 | alist = [54,26,93,17,77,31,44,55,20] 13 | selectionSort(alist) 14 | print(alist) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/sequentialsearch.py: -------------------------------------------------------------------------------- 1 | def sequentialSearch(alist, item): 2 | pos = 0 3 | found = False 4 | 5 | while pos < len(alist) and not found: 6 | if alist[pos] == item: 7 | found = True 8 | else: 9 | pos = pos+1 10 | 11 | return found 12 | 13 | testlist = [1, 2, 32, 8, 17, 19, 42, 13, 0] 14 | print(sequentialSearch(testlist, 3)) 15 | print(sequentialSearch(testlist, 13)) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter5/shellsort.py: -------------------------------------------------------------------------------- 1 | def shellSort(alist): 2 | sublistcount = len(alist)//2 3 | while sublistcount > 0: 4 | 5 | for startposition in range(sublistcount): 6 | gapInsertionSort(alist,startposition,sublistcount) 7 | 8 | print("After increments of size",sublistcount, 9 | "The list is",alist) 10 | 11 | sublistcount = sublistcount // 2 12 | 13 | def gapInsertionSort(alist,start,gap): 14 | for i in range(start+gap,len(alist),gap): 15 | 16 | currentvalue = alist[i] 17 | position = i 18 | 19 | while position>=gap and alist[position-gap]>currentvalue: 20 | alist[position]=alist[position-gap] 21 | position = position-gap 22 | 23 | alist[position]=currentvalue 24 | 25 | alist = [54,26,93,17,77,31,44,55,20] 26 | shellSort(alist) 27 | print(alist) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/balancedbst.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from pythonds.trees.bst import BinarySearchTree, TreeNode 3 | 4 | class AVLTree(BinarySearchTree): 5 | ''' 6 | Author: Brad Miller 7 | Date: 1/15/2005 8 | Description: Imlement a binary search tree with the following interface 9 | functions: 10 | __contains__(y) <==> y in x 11 | __getitem__(y) <==> x[y] 12 | __init__() 13 | __len__() <==> len(x) 14 | __setitem__(k,v) <==> x[k] = v 15 | clear() 16 | get(k) 17 | has_key(k) 18 | items() 19 | keys() 20 | values() 21 | put(k,v) 22 | ''' 23 | 24 | 25 | def _put(self,key,val,currentNode): 26 | if key < currentNode.key: 27 | if currentNode.hasLeftChild(): 28 | self._put(key,val,currentNode.leftChild) 29 | else: 30 | currentNode.leftChild = TreeNode(key,val,parent=currentNode) 31 | self.updateBalance(currentNode.leftChild) 32 | else: 33 | if currentNode.hasRightChild(): 34 | self._put(key,val,currentNode.rightChild) 35 | else: 36 | currentNode.rightChild = TreeNode(key,val,parent=currentNode) 37 | self.updateBalance(currentNode.rightChild) 38 | 39 | def updateBalance(self,node): 40 | if node.balanceFactor > 1 or node.balanceFactor < -1: 41 | self.rebalance(node) 42 | return 43 | if node.parent != None: 44 | if node.isLeftChild(): 45 | node.parent.balanceFactor += 1 46 | elif node.isRightChild(): 47 | node.parent.balanceFactor -= 1 48 | 49 | if node.parent.balanceFactor != 0: 50 | self.updateBalance(node.parent) 51 | 52 | def rebalance(self,node): 53 | if node.balanceFactor < 0: 54 | if node.rightChild.balanceFactor > 0: 55 | # Do an LR Rotation 56 | self.rotateRight(node.rightChild) 57 | self.rotateLeft(node) 58 | else: 59 | # single left 60 | self.rotateLeft(node) 61 | elif node.balanceFactor > 0: 62 | if node.leftChild.balanceFactor < 0: 63 | # Do an RL Rotation 64 | self.rotateLeft(node.leftChild) 65 | self.rotateRight(node) 66 | else: 67 | # single right 68 | self.rotateRight(node) 69 | 70 | def rotateLeft(self,rotRoot): 71 | newRoot = rotRoot.rightChild 72 | rotRoot.rightChild = newRoot.leftChild 73 | if newRoot.leftChild != None: 74 | newRoot.leftChild.parent = rotRoot 75 | newRoot.parent = rotRoot.parent 76 | if rotRoot.isRoot(): 77 | self.root = newRoot 78 | else: 79 | if rotRoot.isLeftChild(): 80 | rotRoot.parent.leftChild = newRoot 81 | else: 82 | rotRoot.parent.rightChild = newRoot 83 | newRoot.leftChild = rotRoot 84 | rotRoot.parent = newRoot 85 | rotRoot.balanceFactor = rotRoot.balanceFactor + 1 - min(newRoot.balanceFactor, 0) 86 | newRoot.balanceFactor = newRoot.balanceFactor + 1 + max(rotRoot.balanceFactor, 0) 87 | 88 | 89 | def rotateRight(self,rotRoot): 90 | newRoot = rotRoot.leftChild 91 | rotRoot.leftChild = newRoot.rightChild 92 | if newRoot.rightChild != None: 93 | newRoot.rightChild.parent = rotRoot 94 | newRoot.parent = rotRoot.parent 95 | if rotRoot.isRoot(): 96 | self.root = newRoot 97 | else: 98 | if rotRoot.isRightChild(): 99 | rotRoot.parent.rightChild = newRoot 100 | else: 101 | rotRoot.parent.leftChild = newRoot 102 | newRoot.rightChild = rotRoot 103 | rotRoot.parent = newRoot 104 | rotRoot.balanceFactor = rotRoot.balanceFactor - 1 - max(newRoot.balanceFactor, 0) 105 | newRoot.balanceFactor = newRoot.balanceFactor - 1 + min(rotRoot.balanceFactor, 0) 106 | 107 | 108 | class BinaryTreeTests(unittest.TestCase): 109 | def setUp(self): 110 | self.bst = AVLTree() 111 | 112 | def testAuto1(self): 113 | self.bst.put(30,'a') 114 | self.bst.put(50,'b') 115 | self.bst.put(40,'c') 116 | assert self.bst.root.key == 40 117 | 118 | def testAuto2(self): 119 | self.bst.put(50,'a') 120 | self.bst.put(30,'b') 121 | self.bst.put(40,'c') 122 | assert self.bst.root.key == 40 123 | 124 | def testAuto3(self): 125 | self.bst.put(50,'a') 126 | self.bst.put(30,'b') 127 | self.bst.put(70,'c') 128 | self.bst.put(80,'c') 129 | self.bst.put(60,'d') 130 | self.bst.put(90,'e') 131 | assert self.bst.root.key == 70 132 | 133 | def testAuto3(self): 134 | self.bst.put(40,'a') 135 | self.bst.put(30,'b') 136 | self.bst.put(50,'c') 137 | self.bst.put(45,'d') 138 | self.bst.put(60,'e') 139 | self.bst.put(43,'f') 140 | assert self.bst.root.key == 45 141 | assert self.bst.root.leftChild.key == 40 142 | assert self.bst.root.rightChild.key == 50 143 | assert self.bst.root.balanceFactor == 0 144 | assert self.bst.root.leftChild.balanceFactor == 0 145 | assert self.bst.root.rightChild.balanceFactor == -1 146 | 147 | def testAuto4(self): 148 | self.bst.put(40,'a') 149 | self.bst.put(30,'b') 150 | self.bst.put(50,'c') 151 | self.bst.put(10,'d') 152 | self.bst.put(35,'e') 153 | self.bst.put(37,'f') 154 | assert self.bst.root.key == 35 155 | assert self.bst.root.leftChild.key == 30 156 | assert self.bst.root.rightChild.key == 40 157 | assert self.bst.root.balanceFactor == 0 158 | assert self.bst.root.leftChild.balanceFactor == 1 159 | assert self.bst.root.rightChild.balanceFactor == 0 160 | 161 | 162 | if __name__ == '__main__': 163 | import platform 164 | print(platform.python_version()) 165 | unittest.main() 166 | 167 | # Local Variables: 168 | # py-which-shell: "python3" 169 | # End: 170 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/binarytreelist.py: -------------------------------------------------------------------------------- 1 | def BinaryTree(r): 2 | return [r, [], []] 3 | 4 | def insertLeft(root,newBranch): 5 | t = root.pop(1) 6 | if len(t) > 1: 7 | root.insert(1,[newBranch,t,[]]) 8 | else: 9 | root.insert(1,[newBranch, [], []]) 10 | return root 11 | 12 | def insertRight(root,newBranch): 13 | t = root.pop(2) 14 | if len(t) > 1: 15 | root.insert(2,[newBranch,[],t]) 16 | else: 17 | root.insert(2,[newBranch,[],[]]) 18 | return root 19 | 20 | def getRootVal(root): 21 | return root[0] 22 | 23 | def setRootVal(root,newVal): 24 | root[0] = newVal 25 | 26 | def getLeftChild(root): 27 | return root[1] 28 | 29 | def getRightChild(root): 30 | return root[2] 31 | 32 | r = BinaryTree(3) 33 | insertLeft(r,4) 34 | insertLeft(r,5) 35 | insertRight(r,6) 36 | insertRight(r,7) 37 | l = getLeftChild(r) 38 | print(l) 39 | 40 | setRootVal(l,9) 41 | print(r) 42 | insertLeft(l,11) 43 | print(r) 44 | print(getRightChild(getRightChild(r))) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/binarytreenoderef.py: -------------------------------------------------------------------------------- 1 | 2 | class BinaryTree: 3 | def __init__(self,rootObj): 4 | self.key = rootObj 5 | self.leftChild = None 6 | self.rightChild = None 7 | 8 | def insertLeft(self,newNode): 9 | if self.leftChild == None: 10 | self.leftChild = BinaryTree(newNode) 11 | else: 12 | t = BinaryTree(newNode) 13 | t.leftChild = self.leftChild 14 | self.leftChild = t 15 | 16 | def insertRight(self,newNode): 17 | if self.rightChild == None: 18 | self.rightChild = BinaryTree(newNode) 19 | else: 20 | t = BinaryTree(newNode) 21 | t.rightChild = self.rightChild 22 | self.rightChild = t 23 | 24 | 25 | def getRightChild(self): 26 | return self.rightChild 27 | 28 | def getLeftChild(self): 29 | return self.leftChild 30 | 31 | def setRootVal(self,obj): 32 | self.key = obj 33 | 34 | def getRootVal(self): 35 | return self.key 36 | 37 | 38 | r = BinaryTree('a') 39 | print(r.getRootVal()) 40 | print(r.getLeftChild()) 41 | r.insertLeft('b') 42 | print(r.getLeftChild()) 43 | print(r.getLeftChild().getRootVal()) 44 | r.insertRight('c') 45 | print(r.getRightChild()) 46 | print(r.getRightChild().getRootVal()) 47 | r.getRightChild().setRootVal('hello') 48 | print(r.getRightChild().getRootVal()) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/binheap.py: -------------------------------------------------------------------------------- 1 | class BinHeap: 2 | def __init__(self): 3 | self.heapList = [0] 4 | self.currentSize = 0 5 | 6 | 7 | def percUp(self,i): 8 | while i // 2 > 0: 9 | if self.heapList[i] < self.heapList[i // 2]: 10 | tmp = self.heapList[i // 2] 11 | self.heapList[i // 2] = self.heapList[i] 12 | self.heapList[i] = tmp 13 | i = i // 2 14 | 15 | def insert(self,k): 16 | self.heapList.append(k) 17 | self.currentSize = self.currentSize + 1 18 | self.percUp(self.currentSize) 19 | 20 | def percDown(self,i): 21 | while (i * 2) <= self.currentSize: 22 | mc = self.minChild(i) 23 | if self.heapList[i] > self.heapList[mc]: 24 | tmp = self.heapList[i] 25 | self.heapList[i] = self.heapList[mc] 26 | self.heapList[mc] = tmp 27 | i = mc 28 | 29 | def minChild(self,i): 30 | if i * 2 + 1 > self.currentSize: 31 | return i * 2 32 | else: 33 | if self.heapList[i*2] < self.heapList[i*2+1]: 34 | return i * 2 35 | else: 36 | return i * 2 + 1 37 | 38 | def delMin(self): 39 | retval = self.heapList[1] 40 | self.heapList[1] = self.heapList[self.currentSize] 41 | self.currentSize = self.currentSize - 1 42 | self.heapList.pop() 43 | self.percDown(1) 44 | return retval 45 | 46 | def buildHeap(self,alist): 47 | i = len(alist) // 2 48 | self.currentSize = len(alist) 49 | self.heapList = [0] + alist[:] 50 | while (i > 0): 51 | self.percDown(i) 52 | i = i - 1 53 | 54 | bh = BinHeap() 55 | bh.buildHeap([9,5,6,2,3]) 56 | 57 | print(bh.delMin()) 58 | print(bh.delMin()) 59 | print(bh.delMin()) 60 | print(bh.delMin()) 61 | print(bh.delMin()) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/binsearchtree.py: -------------------------------------------------------------------------------- 1 | class TreeNode: 2 | def __init__(self,key,val,left=None,right=None,parent=None): 3 | self.key = key 4 | self.payload = val 5 | self.leftChild = left 6 | self.rightChild = right 7 | self.parent = parent 8 | 9 | def hasLeftChild(self): 10 | return self.leftChild 11 | 12 | def hasRightChild(self): 13 | return self.rightChild 14 | 15 | def isLeftChild(self): 16 | return self.parent and self.parent.leftChild == self 17 | 18 | def isRightChild(self): 19 | return self.parent and self.parent.rightChild == self 20 | 21 | def isRoot(self): 22 | return not self.parent 23 | 24 | def isLeaf(self): 25 | return not (self.rightChild or self.leftChild) 26 | 27 | def hasAnyChildren(self): 28 | return self.rightChild or self.leftChild 29 | 30 | def hasBothChildren(self): 31 | return self.rightChild and self.leftChild 32 | 33 | def replaceNodeData(self,key,value,lc,rc): 34 | self.key = key 35 | self.payload = value 36 | self.leftChild = lc 37 | self.rightChild = rc 38 | if self.hasLeftChild(): 39 | self.leftChild.parent = self 40 | if self.hasRightChild(): 41 | self.rightChild.parent = self 42 | 43 | class BinarySearchTree: 44 | 45 | def __init__(self): 46 | self.root = None 47 | self.size = 0 48 | 49 | def length(self): 50 | return self.size 51 | 52 | def __len__(self): 53 | return self.size 54 | 55 | def __iter__(self): 56 | return self.root.__iter__() 57 | 58 | def put(self,key,val): 59 | if self.root: 60 | self._put(key,val,self.root) 61 | else: 62 | self.root = TreeNode(key,val) 63 | self.size = self.size + 1 64 | 65 | def _put(self,key,val,currentNode): 66 | if key < currentNode.key: 67 | if currentNode.hasLeftChild(): 68 | self._put(key,val,currentNode.leftChild) 69 | else: 70 | currentNode.leftChild = TreeNode(key,val,parent=currentNode) 71 | else: 72 | if currentNode.hasRightChild(): 73 | self._put(key,val,currentNode.rightChild) 74 | else: 75 | currentNode.rightChild = TreeNode(key,val,parent=currentNode) 76 | 77 | def __setitem__(self,k,v): 78 | self.put(k,v) 79 | 80 | def get(self,key): 81 | if self.root: 82 | res = self._get(key,self.root) 83 | if res: 84 | return res.payload 85 | else: 86 | return None 87 | else: 88 | return None 89 | 90 | def _get(self,key,currentNode): 91 | if not currentNode: 92 | return None 93 | elif currentNode.key == key: 94 | return currentNode 95 | elif key < currentNode.key: 96 | return self._get(key,currentNode.leftChild) 97 | else: 98 | return self._get(key,currentNode.rightChild) 99 | 100 | def __getitem__(self,key): 101 | return self.get(key) 102 | 103 | def __contains__(self,key): 104 | if self._get(key,self.root): 105 | return True 106 | else: 107 | return False 108 | 109 | def delete(self,key): 110 | if self.size > 1: 111 | nodeToRemove = self._get(key,self.root) 112 | if nodeToRemove: 113 | self.remove(nodeToRemove) 114 | self.size = self.size-1 115 | else: 116 | raise KeyError('Error, key not in tree') 117 | elif self.size == 1 and self.root.key == key: 118 | self.root = None 119 | self.size = self.size - 1 120 | else: 121 | raise KeyError('Error, key not in tree') 122 | 123 | def __delitem__(self,key): 124 | self.delete(key) 125 | 126 | def spliceOut(self): 127 | if self.isLeaf(): 128 | if self.isLeftChild(): 129 | self.parent.leftChild = None 130 | else: 131 | self.parent.rightChild = None 132 | elif self.hasAnyChildren(): 133 | if self.hasLeftChild(): 134 | if self.isLeftChild(): 135 | self.parent.leftChild = self.leftChild 136 | else: 137 | self.parent.rightChild = self.leftChild 138 | self.leftChild.parent = self.parent 139 | else: 140 | if self.isLeftChild(): 141 | self.parent.leftChild = self.rightChild 142 | else: 143 | self.parent.rightChild = self.rightChild 144 | self.rightChild.parent = self.parent 145 | 146 | def findSuccessor(self): 147 | succ = None 148 | if self.hasRightChild(): 149 | succ = self.rightChild.findMin() 150 | else: 151 | if self.parent: 152 | if self.isLeftChild(): 153 | succ = self.parent 154 | else: 155 | self.parent.rightChild = None 156 | succ = self.parent.findSuccessor() 157 | self.parent.rightChild = self 158 | return succ 159 | 160 | def findMin(self): 161 | current = self 162 | while current.hasLeftChild(): 163 | current = current.leftChild 164 | return current 165 | 166 | def remove(self,currentNode): 167 | if currentNode.isLeaf(): #leaf 168 | if currentNode == currentNode.parent.leftChild: 169 | currentNode.parent.leftChild = None 170 | else: 171 | currentNode.parent.rightChild = None 172 | elif currentNode.hasBothChildren(): #interior 173 | succ = currentNode.findSuccessor() 174 | succ.spliceOut() 175 | currentNode.key = succ.key 176 | currentNode.payload = succ.payload 177 | 178 | else: # this node has one child 179 | if currentNode.hasLeftChild(): 180 | if currentNode.isLeftChild(): 181 | currentNode.leftChild.parent = currentNode.parent 182 | currentNode.parent.leftChild = currentNode.leftChild 183 | elif currentNode.isRightChild(): 184 | currentNode.leftChild.parent = currentNode.parent 185 | currentNode.parent.rightChild = currentNode.leftChild 186 | else: 187 | currentNode.replaceNodeData(currentNode.leftChild.key, 188 | currentNode.leftChild.payload, 189 | currentNode.leftChild.leftChild, 190 | currentNode.leftChild.rightChild) 191 | else: 192 | if currentNode.isLeftChild(): 193 | currentNode.rightChild.parent = currentNode.parent 194 | currentNode.parent.leftChild = currentNode.rightChild 195 | elif currentNode.isRightChild(): 196 | currentNode.rightChild.parent = currentNode.parent 197 | currentNode.parent.rightChild = currentNode.rightChild 198 | else: 199 | currentNode.replaceNodeData(currentNode.rightChild.key, 200 | currentNode.rightChild.payload, 201 | currentNode.rightChild.leftChild, 202 | currentNode.rightChild.rightChild) 203 | 204 | 205 | mytree = BinarySearchTree() 206 | mytree[3]="red" 207 | mytree[4]="blue" 208 | mytree[6]="yellow" 209 | mytree[2]="at" 210 | 211 | print(3 in mytree) 212 | print(mytree[6]) 213 | del mytree[2] 214 | print(mytree[2]) 215 | 216 | 217 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/binsearchtree2.py: -------------------------------------------------------------------------------- 1 | class TreeNode: 2 | def __init__(self,key,val,left=None,right=None,parent=None): 3 | self.key = key 4 | self.payload = val 5 | self.leftChild = left 6 | self.rightChild = right 7 | self.parent = parent 8 | 9 | def hasLeftChild(self): 10 | return self.leftChild 11 | 12 | def hasRightChild(self): 13 | return self.rightChild 14 | 15 | def isLeftChild(self): 16 | return self.parent and self.parent.leftChild == self 17 | 18 | def isRightChild(self): 19 | return self.parent and self.parent.rightChild == self 20 | 21 | def isRoot(self): 22 | return not self.parent 23 | 24 | def isLeaf(self): 25 | return not (self.rightChild or self.leftChild) 26 | 27 | def hasAnyChildren(self): 28 | return self.rightChild or self.leftChild 29 | 30 | def hasBothChildren(self): 31 | return self.rightChild and self.leftChild 32 | 33 | def replaceNodeData(self,key,value,lc,rc): 34 | self.key = key 35 | self.payload = value 36 | self.leftChild = lc 37 | self.rightChild = rc 38 | if self.hasLeftChild(): 39 | self.leftChild.parent = self 40 | if self.hasRightChild(): 41 | self.rightChild.parent = self 42 | 43 | def __iter__(self): 44 | if self: 45 | if self.hasLeftChild(): 46 | for elem in self.leftChiLd: 47 | yield elem 48 | yield self.key 49 | if self.hasRightChild(): 50 | for elem in self.rightChild: 51 | yield elem 52 | 53 | class BinarySearchTree: 54 | 55 | def __init__(self): 56 | self.root = None 57 | self.size = 0 58 | 59 | def length(self): 60 | return self.size 61 | 62 | def __len__(self): 63 | return self.size 64 | 65 | def __iter__(self): 66 | return self.root.__iter__() 67 | 68 | def put(self,key,val): 69 | if self.root: 70 | self._put(key,val,self.root) 71 | else: 72 | self.root = TreeNode(key,val) 73 | self.size = self.size + 1 74 | 75 | def _put(self,key,val,currentNode): 76 | if key < currentNode.key: 77 | if currentNode.hasLeftChild(): 78 | self._put(key,val,currentNode.leftChild) 79 | else: 80 | currentNode.leftChild = TreeNode(key,val,parent=currentNode) 81 | else: 82 | if currentNode.hasRightChild(): 83 | self._put(key,val,currentNode.rightChild) 84 | else: 85 | currentNode.rightChild = TreeNode(key,val,parent=currentNode) 86 | 87 | def __setitem__(self,k,v): 88 | self.put(k,v) 89 | 90 | def get(self,key): 91 | if self.root: 92 | res = self._get(key,self.root) 93 | if res: 94 | return res.payload 95 | else: 96 | return None 97 | else: 98 | return None 99 | 100 | def _get(self,key,currentNode): 101 | if not currentNode: 102 | return None 103 | elif currentNode.key == key: 104 | return currentNode 105 | elif key < currentNode.key: 106 | return self._get(key,currentNode.leftChild) 107 | else: 108 | return self._get(key,currentNode.rightChild) 109 | 110 | def __getitem__(self,key): 111 | return self.get(key) 112 | 113 | def __contains__(self,key): 114 | if self._get(key,self.root): 115 | return True 116 | else: 117 | return False 118 | 119 | def delete(self,key): 120 | if self.size > 1: 121 | nodeToRemove = self._get(key,self.root) 122 | if nodeToRemove: 123 | self.remove(nodeToRemove) 124 | self.size = self.size-1 125 | else: 126 | raise KeyError('Error, key not in tree') 127 | elif self.size == 1 and self.root.key == key: 128 | self.root = None 129 | self.size = self.size - 1 130 | else: 131 | raise KeyError('Error, key not in tree') 132 | 133 | def __delitem__(self,key): 134 | self.delete(key) 135 | 136 | def spliceOut(self): 137 | if self.isLeaf(): 138 | if self.isLeftChild(): 139 | self.parent.leftChild = None 140 | else: 141 | self.parent.rightChild = None 142 | elif self.hasAnyChildren(): 143 | if self.hasLeftChild(): 144 | if self.isLeftChild(): 145 | self.parent.leftChild = self.leftChild 146 | else: 147 | self.parent.rightChild = self.leftChild 148 | self.leftChild.parent = self.parent 149 | else: 150 | if self.isLeftChild(): 151 | self.parent.leftChild = self.rightChild 152 | else: 153 | self.parent.rightChild = self.rightChild 154 | self.rightChild.parent = self.parent 155 | 156 | def findSuccessor(self): 157 | succ = None 158 | if self.hasRightChild(): 159 | succ = self.rightChild.findMin() 160 | else: 161 | if self.parent: 162 | if self.isLeftChild(): 163 | succ = self.parent 164 | else: 165 | self.parent.rightChild = None 166 | succ = self.parent.findSuccessor() 167 | self.parent.rightChild = self 168 | return succ 169 | 170 | def findMin(self): 171 | current = self 172 | while current.hasLeftChild(): 173 | current = current.leftChild 174 | return current 175 | 176 | def remove(self,currentNode): 177 | if currentNode.isLeaf(): #leaf 178 | if currentNode == currentNode.parent.leftChild: 179 | currentNode.parent.leftChild = None 180 | else: 181 | currentNode.parent.rightChild = None 182 | elif currentNode.hasBothChildren(): #interior 183 | succ = currentNode.findSuccessor() 184 | succ.spliceOut() 185 | currentNode.key = succ.key 186 | currentNode.payload = succ.payload 187 | 188 | else: # this node has one child 189 | if currentNode.hasLeftChild(): 190 | if currentNode.isLeftChild(): 191 | currentNode.leftChild.parent = currentNode.parent 192 | currentNode.parent.leftChild = currentNode.leftChild 193 | elif currentNode.isRightChild(): 194 | currentNode.leftChild.parent = currentNode.parent 195 | currentNode.parent.rightChild = currentNode.leftChild 196 | else: 197 | currentNode.replaceNodeData(currentNode.leftChild.key, 198 | currentNode.leftChild.payload, 199 | currentNode.leftChild.leftChild, 200 | currentNode.leftChild.rightChild) 201 | else: 202 | if currentNode.isLeftChild(): 203 | currentNode.rightChild.parent = currentNode.parent 204 | currentNode.parent.leftChild = currentNode.rightChild 205 | elif currentNode.isRightChild(): 206 | currentNode.rightChild.parent = currentNode.parent 207 | currentNode.parent.rightChild = currentNode.rightChild 208 | else: 209 | currentNode.replaceNodeData(currentNode.rightChild.key, 210 | currentNode.rightChild.payload, 211 | currentNode.rightChild.leftChild, 212 | currentNode.rightChild.rightChild) 213 | 214 | 215 | 216 | 217 | mytree = BinarySearchTree() 218 | mytree[3]="red" 219 | mytree[4]="blue" 220 | mytree[6]="yellow" 221 | mytree[2]="at" 222 | 223 | print(3 in mytree) 224 | print(mytree[6]) 225 | del mytree[2] 226 | print(mytree[2]) 227 | 228 | for key in mytree: 229 | print(key,mytree[key]) 230 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/heapexample1.py: -------------------------------------------------------------------------------- 1 | from pythonds.trees.binheap import BinHeap 2 | 3 | bh = BinHeap() 4 | bh.insert(5) 5 | bh.insert(7) 6 | bh.insert(3) 7 | bh.insert(11) 8 | 9 | print(bh.delMin()) 10 | 11 | print(bh.delMin()) 12 | 13 | print(bh.delMin()) 14 | 15 | print(bh.delMin()) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/parsetree.py: -------------------------------------------------------------------------------- 1 | from pythonds.basic.stack import Stack 2 | from pythonds.trees.binaryTree import BinaryTree 3 | 4 | def buildParseTree(fpexp): 5 | fplist = fpexp.split() 6 | pStack = Stack() 7 | eTree = BinaryTree('') 8 | pStack.push(eTree) 9 | currentTree = eTree 10 | for i in fplist: 11 | if i == '(': 12 | currentTree.insertLeft('') 13 | pStack.push(currentTree) 14 | currentTree = currentTree.getLeftChild() 15 | elif i not in ['+', '-', '*', '/', ')']: 16 | currentTree.setRootVal(int(i)) 17 | parent = pStack.pop() 18 | currentTree = parent 19 | elif i in ['+', '-', '*', '/']: 20 | currentTree.setRootVal(i) 21 | currentTree.insertRight('') 22 | pStack.push(currentTree) 23 | currentTree = currentTree.getRightChild() 24 | elif i == ')': 25 | currentTree = pStack.pop() 26 | else: 27 | raise ValueError 28 | return eTree 29 | 30 | pt = buildParseTree("( ( 10 + 5 ) * 3 )") 31 | pt.postorder() 32 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter6/treeexample.py: -------------------------------------------------------------------------------- 1 | from pythonds.trees.binaryTree import BinaryTree 2 | import operator 3 | 4 | x = BinaryTree('*') 5 | x.insertLeft('+') 6 | l = x.getLeftChild() 7 | l.insertLeft(4) 8 | l.insertRight(5) 9 | x.insertRight(7) 10 | 11 | 12 | def printexp(tree): 13 | sVal = "" 14 | if tree: 15 | sVal = '(' + printexp(tree.getLeftChild()) 16 | sVal = sVal + str(tree.getRootVal()) 17 | sVal = sVal + printexp(tree.getRightChild())+')' 18 | return sVal 19 | 20 | def postordereval(tree): 21 | opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv} 22 | res1 = None 23 | res2 = None 24 | if tree: 25 | res1 = postordereval(tree.getLeftChild()) 26 | res2 = postordereval(tree.getRightChild()) 27 | if res1 and res2: 28 | return opers[tree.getRootVal()](res1,res2) 29 | else: 30 | return tree.getRootVal() 31 | 32 | print(printexp(x)) 33 | 34 | print(postordereval(x)) 35 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter7/depthfirstsearch.py: -------------------------------------------------------------------------------- 1 | from pythonds.graphs import Graph, Vertex 2 | 3 | def genLegalMoves(x,y,bdSize): 4 | newMoves = [] 5 | moveOffsets = [(-1,-2),(-1,2),(-2,-1),(-2,1), 6 | ( 1,-2),( 1,2),( 2,-1),( 2,1)] 7 | for i in moveOffsets: 8 | newX = x + i[0] 9 | newY = y + i[1] 10 | if legalCoord(newX,bdSize) and legalCoord(newY,bdSize): 11 | newMoves.append((newX,newY)) 12 | return newMoves 13 | 14 | def legalCoord(x,bdSize): 15 | if x >= 0 and x < bdSize: 16 | return True 17 | else: 18 | return False 19 | 20 | def knightGraph(bdSize): 21 | ktGraph = Graph() 22 | for row in range(bdSize): 23 | for col in range(bdSize): 24 | nodeId = posToNodeId(row,col,bdSize) 25 | newPositions = genLegalMoves(row,col,bdSize) 26 | for e in newPositions: 27 | nid = posToNodeId(e[0],e[1],bdSize) 28 | ktGraph.addEdge(nodeId,nid) 29 | return ktGraph 30 | 31 | def knightTour(n,path,u,limit): 32 | u.setColor('gray') 33 | path.append(u) 34 | if n < limit: 35 | nbrList = list(u.getConnections()) 36 | i = 0 37 | done = False 38 | while i < len(nbrList) and not done: 39 | if nbrList[i].getColor() == 'white': 40 | done = knightTour(n+1, path, nbrList[i], limit) 41 | i = i + 1 42 | if not done: # prepare to backtrack 43 | path.pop() 44 | u.setColor('white') 45 | else: 46 | done = True 47 | return done 48 | 49 | 50 | def posToNodeId(row,col,bdSize): 51 | return row*bdSize+col 52 | 53 | 54 | def orderByAvail(n): 55 | resList = [] 56 | for v in n.getConnections(): 57 | if v.getColor() == 'white': 58 | c = 0 59 | for w in v.getConnections(): 60 | if w.getColor() == 'white': 61 | c = c + 1 62 | resList.append((c,v)) 63 | resList.sort(key=lambda x: x[0]) 64 | return [y[1] for y in resList] 65 | 66 | def knightTourBetter(n,path,u,limit): #use order by available function 67 | u.setColor('gray') 68 | path.append(u) 69 | if n < limit: 70 | nbrList = orderByAvail(u) 71 | i = 0 72 | done = False 73 | while i < len(nbrList) and not done: 74 | if nbrList[i].getColor() == 'white': 75 | done = knightTour(n+1, path, nbrList[i], limit) 76 | i = i + 1 77 | if not done: # prepare to backtrack 78 | path.pop() 79 | u.setColor('white') 80 | else: 81 | done = True 82 | return done 83 | 84 | kg = knightGraph(5) #five by five solution 85 | 86 | thepath = [] 87 | start = kg.getVertex(4) 88 | knightTourBetter(0,thepath,start,24) 89 | for v in thepath: 90 | print(v.getId()) 91 | 92 | 93 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter7/fourletterwords.txt: -------------------------------------------------------------------------------- 1 | AAHS 2 | AALS 3 | ABAS 4 | ABBA 5 | ABBE 6 | ABED 7 | ABET 8 | ABLE 9 | ABLY 10 | ABOS 11 | ABRI 12 | ABUT 13 | ABYE 14 | ABYS 15 | ACED 16 | ACES 17 | ACHE 18 | ACHY 19 | ACID 20 | ACME 21 | ACNE 22 | ACRE 23 | ACTA 24 | ACTS 25 | ACYL 26 | ADDS 27 | ADIT 28 | ADOS 29 | ADZE 30 | AEON 31 | AERO 32 | AERY 33 | AFAR 34 | AGAR 35 | AGAS 36 | AGED 37 | AGEE 38 | AGER 39 | AGES 40 | AGHA 41 | AGIN 42 | AGIO 43 | AGLY 44 | AGMA 45 | AGOG 46 | AGON 47 | AGUE 48 | AHEM 49 | AHOY 50 | AIDE 51 | AIDS 52 | AILS 53 | AIMS 54 | AINS 55 | AIRN 56 | AIRS 57 | AIRT 58 | AIRY 59 | AITS 60 | AJAR 61 | AJEE 62 | AKEE 63 | AKIN 64 | ALAE 65 | ALAN 66 | ALAR 67 | ALAS 68 | ALBA 69 | ALBS 70 | ALEC 71 | ALEE 72 | ALEF 73 | ALES 74 | ALFA 75 | ALGA 76 | ALIF 77 | ALIT 78 | ALKY 79 | ALLS 80 | ALLY 81 | ALMA 82 | ALME 83 | ALMS 84 | ALOE 85 | ALOW 86 | ALPS 87 | ALSO 88 | ALTO 89 | ALTS 90 | ALUM 91 | AMAH 92 | AMAS 93 | AMBO 94 | AMEN 95 | AMIA 96 | AMID 97 | AMIE 98 | AMIN 99 | AMIR 100 | AMIS 101 | AMMO 102 | AMOK 103 | AMPS 104 | AMUS 105 | AMYL 106 | ANAL 107 | ANAS 108 | ANDS 109 | ANES 110 | ANEW 111 | ANGA 112 | ANIL 113 | ANIS 114 | ANKH 115 | ANNA 116 | ANOA 117 | ANON 118 | ANSA 119 | ANTA 120 | ANTE 121 | ANTI 122 | ANTS 123 | ANUS 124 | APED 125 | APER 126 | APES 127 | APEX 128 | APOD 129 | APSE 130 | AQUA 131 | ARAK 132 | ARBS 133 | ARCH 134 | ARCO 135 | ARCS 136 | AREA 137 | ARES 138 | ARFS 139 | ARIA 140 | ARID 141 | ARIL 142 | ARKS 143 | ARMS 144 | ARMY 145 | ARSE 146 | ARTS 147 | ARTY 148 | ARUM 149 | ARVO 150 | ARYL 151 | ASCI 152 | ASEA 153 | ASHY 154 | ASKS 155 | ASPS 156 | ATAP 157 | ATES 158 | ATMA 159 | ATOM 160 | ATOP 161 | AUKS 162 | AULD 163 | AUNT 164 | AURA 165 | AUTO 166 | AVER 167 | AVES 168 | AVID 169 | AVOS 170 | AVOW 171 | AWAY 172 | AWED 173 | AWEE 174 | AWES 175 | AWLS 176 | AWNS 177 | AWNY 178 | AWOL 179 | AWRY 180 | AXAL 181 | AXED 182 | AXEL 183 | AXES 184 | AXIL 185 | AXIS 186 | AXLE 187 | AXON 188 | AYAH 189 | AYES 190 | AYIN 191 | AZAN 192 | AZON 193 | BAAL 194 | BAAS 195 | BABA 196 | BABE 197 | BABU 198 | BABY 199 | BACH 200 | BACK 201 | BADE 202 | BADS 203 | BAFF 204 | BAGS 205 | BAHT 206 | BAIL 207 | BAIT 208 | BAKE 209 | BALD 210 | BALE 211 | BALK 212 | BALL 213 | BALM 214 | BALS 215 | BAMS 216 | BAND 217 | BANE 218 | BANG 219 | BANI 220 | BANK 221 | BANS 222 | BAPS 223 | BARB 224 | BARD 225 | BARE 226 | BARF 227 | BARK 228 | BARM 229 | BARN 230 | BARS 231 | BASE 232 | BASH 233 | BASK 234 | BASS 235 | BAST 236 | BATE 237 | BATH 238 | BATS 239 | BATT 240 | BAUD 241 | BAWD 242 | BAWL 243 | BAYS 244 | BEAD 245 | BEAK 246 | BEAM 247 | BEAN 248 | BEAR 249 | BEAT 250 | BEAU 251 | BECK 252 | BEDS 253 | BEDU 254 | BEEF 255 | BEEN 256 | BEEP 257 | BEER 258 | BEES 259 | BEET 260 | BEGS 261 | BELL 262 | BELS 263 | BELT 264 | BEMA 265 | BEND 266 | BENE 267 | BENS 268 | BENT 269 | BERG 270 | BERM 271 | BEST 272 | BETA 273 | BETH 274 | BETS 275 | BEVY 276 | BEYS 277 | BHUT 278 | BIAS 279 | BIBB 280 | BIBS 281 | BICE 282 | BIDE 283 | BIDS 284 | BIER 285 | BIFF 286 | BIGS 287 | BIKE 288 | BILE 289 | BILK 290 | BILL 291 | BIMA 292 | BIND 293 | BINE 294 | BINS 295 | BINT 296 | BIOS 297 | BIRD 298 | BIRK 299 | BIRL 300 | BIRR 301 | BISE 302 | BISK 303 | BITE 304 | BITS 305 | BITT 306 | BIZE 307 | BLAB 308 | BLAE 309 | BLAH 310 | BLAM 311 | BLAT 312 | BLAW 313 | BLEB 314 | BLED 315 | BLET 316 | BLEW 317 | BLIN 318 | BLIP 319 | BLOB 320 | BLOC 321 | BLOT 322 | BLOW 323 | BLUB 324 | BLUE 325 | BLUR 326 | BOAR 327 | BOAS 328 | BOAT 329 | BOBS 330 | BOCK 331 | BODE 332 | BODS 333 | BODY 334 | BOFF 335 | BOGS 336 | BOGY 337 | BOIL 338 | BOLA 339 | BOLD 340 | BOLE 341 | BOLL 342 | BOLO 343 | BOLT 344 | BOMB 345 | BOND 346 | BONE 347 | BONG 348 | BONK 349 | BONY 350 | BOOB 351 | BOOK 352 | BOOM 353 | BOON 354 | BOOR 355 | BOOS 356 | BOOT 357 | BOPS 358 | BORA 359 | BORE 360 | BORN 361 | BORT 362 | BOSH 363 | BOSK 364 | BOSS 365 | BOTA 366 | BOTH 367 | BOTS 368 | BOTT 369 | BOUT 370 | BOWL 371 | BOWS 372 | BOXY 373 | BOYO 374 | BOYS 375 | BOZO 376 | BRAD 377 | BRAE 378 | BRAG 379 | BRAN 380 | BRAS 381 | BRAT 382 | BRAW 383 | BRAY 384 | BRED 385 | BREE 386 | BREN 387 | BREW 388 | BRIE 389 | BRIG 390 | BRIM 391 | BRIN 392 | BRIO 393 | BRIS 394 | BRIT 395 | BROO 396 | BROS 397 | BROW 398 | BRRR 399 | BRUT 400 | BUBO 401 | BUBS 402 | BUCK 403 | BUDS 404 | BUFF 405 | BUGS 406 | BUHL 407 | BUHR 408 | BULB 409 | BULK 410 | BULL 411 | BUMF 412 | BUMP 413 | BUMS 414 | BUND 415 | BUNG 416 | BUNK 417 | BUNN 418 | BUNS 419 | BUNT 420 | BUOY 421 | BURA 422 | BURD 423 | BURG 424 | BURL 425 | BURN 426 | BURP 427 | BURR 428 | BURS 429 | BURY 430 | BUSH 431 | BUSK 432 | BUSS 433 | BUST 434 | BUSY 435 | BUTE 436 | BUTS 437 | BUTT 438 | BUYS 439 | BUZZ 440 | BYES 441 | BYRE 442 | BYRL 443 | BYTE 444 | CABS 445 | CACA 446 | CADE 447 | CADI 448 | CADS 449 | CAFE 450 | CAFF 451 | CAGE 452 | CAGY 453 | CAID 454 | CAIN 455 | CAKE 456 | CAKY 457 | CALF 458 | CALK 459 | CALL 460 | CALM 461 | CALO 462 | CALX 463 | CAME 464 | CAMP 465 | CAMS 466 | CANE 467 | CANS 468 | CANT 469 | CAPE 470 | CAPH 471 | CAPO 472 | CAPS 473 | CARB 474 | CARD 475 | CARE 476 | CARK 477 | CARL 478 | CARN 479 | CARP 480 | CARR 481 | CARS 482 | CART 483 | CASA 484 | CASE 485 | CASH 486 | CASK 487 | CAST 488 | CATE 489 | CATS 490 | CAUL 491 | CAVE 492 | CAVY 493 | CAWS 494 | CAYS 495 | CECA 496 | CEDE 497 | CEDI 498 | CEES 499 | CEIL 500 | CELL 501 | CELS 502 | CELT 503 | CENT 504 | CEPE 505 | CEPS 506 | CERE 507 | CERO 508 | CESS 509 | CETE 510 | CHAD 511 | CHAM 512 | CHAO 513 | CHAP 514 | CHAR 515 | CHAT 516 | CHAW 517 | CHAY 518 | CHEF 519 | CHEW 520 | CHEZ 521 | CHIA 522 | CHIC 523 | CHID 524 | CHIN 525 | CHIP 526 | CHIS 527 | CHIT 528 | CHON 529 | CHOP 530 | CHOW 531 | CHUB 532 | CHUG 533 | CHUM 534 | CIAO 535 | CINE 536 | CION 537 | CIRE 538 | CIST 539 | CITE 540 | CITY 541 | CLAD 542 | CLAG 543 | CLAM 544 | CLAN 545 | CLAP 546 | CLAW 547 | CLAY 548 | CLEF 549 | CLEW 550 | CLIP 551 | CLOD 552 | CLOG 553 | CLON 554 | CLOP 555 | CLOT 556 | CLOY 557 | CLUB 558 | CLUE 559 | COAL 560 | COAT 561 | COAX 562 | COBB 563 | COBS 564 | COCA 565 | COCK 566 | COCO 567 | CODA 568 | CODE 569 | CODS 570 | COED 571 | COFF 572 | COFT 573 | COGS 574 | COHO 575 | COIF 576 | COIL 577 | COIN 578 | COIR 579 | COKE 580 | COLA 581 | COLD 582 | COLE 583 | COLS 584 | COLT 585 | COLY 586 | COMA 587 | COMB 588 | COME 589 | COMP 590 | CONE 591 | CONI 592 | CONK 593 | CONN 594 | CONS 595 | CONY 596 | COOF 597 | COOK 598 | COOL 599 | COON 600 | COOP 601 | COOS 602 | COOT 603 | COPE 604 | COPS 605 | COPY 606 | CORD 607 | CORE 608 | CORF 609 | CORK 610 | CORM 611 | CORN 612 | CORY 613 | COSH 614 | COSS 615 | COST 616 | COSY 617 | COTE 618 | COTS 619 | COUP 620 | COVE 621 | COWL 622 | COWS 623 | COWY 624 | COXA 625 | COYS 626 | COZY 627 | CRAB 628 | CRAG 629 | CRAM 630 | CRAP 631 | CRAW 632 | CREW 633 | CRIB 634 | CRIS 635 | CROC 636 | CROP 637 | CROW 638 | CRUD 639 | CRUS 640 | CRUX 641 | CUBE 642 | CUBS 643 | CUDS 644 | CUED 645 | CUES 646 | CUFF 647 | CUIF 648 | CUKE 649 | CULL 650 | CULM 651 | CULT 652 | CUNT 653 | CUPS 654 | CURB 655 | CURD 656 | CURE 657 | CURF 658 | CURL 659 | CURN 660 | CURR 661 | CURS 662 | CURT 663 | CUSK 664 | CUSP 665 | CUSS 666 | CUTE 667 | CUTS 668 | CWMS 669 | CYAN 670 | CYMA 671 | CYME 672 | CYST 673 | CZAR 674 | DABS 675 | DACE 676 | DADA 677 | DADO 678 | DADS 679 | DAFF 680 | DAFT 681 | DAGO 682 | DAGS 683 | DAHL 684 | DAHS 685 | DAIS 686 | DAKS 687 | DALE 688 | DALS 689 | DAME 690 | DAMN 691 | DAMP 692 | DAMS 693 | DANG 694 | DANK 695 | DAPS 696 | DARB 697 | DARE 698 | DARK 699 | DARN 700 | DART 701 | DASH 702 | DATA 703 | DATE 704 | DATO 705 | DAUB 706 | DAUT 707 | DAVY 708 | DAWK 709 | DAWN 710 | DAWS 711 | DAWT 712 | DAYS 713 | DAZE 714 | DEAD 715 | DEAF 716 | DEAL 717 | DEAN 718 | DEAR 719 | DEBS 720 | DEBT 721 | DECK 722 | DECO 723 | DEED 724 | DEEM 725 | DEEP 726 | DEER 727 | DEES 728 | DEET 729 | DEFI 730 | DEFT 731 | DEFY 732 | DEIL 733 | DEKE 734 | DELE 735 | DELF 736 | DELI 737 | DELL 738 | DELS 739 | DEME 740 | DEMO 741 | DEMY 742 | DENE 743 | DENS 744 | DENT 745 | DENY 746 | DERE 747 | DERM 748 | DESK 749 | DEVA 750 | DEVS 751 | DEWS 752 | DEWY 753 | DEXY 754 | DEYS 755 | DHAK 756 | DHAL 757 | DHOW 758 | DIAL 759 | DIBS 760 | DICE 761 | DICK 762 | DIDO 763 | DIDY 764 | DIED 765 | DIEL 766 | DIES 767 | DIET 768 | DIGS 769 | DIKE 770 | DILL 771 | DIME 772 | DIMS 773 | DINE 774 | DING 775 | DINK 776 | DINS 777 | DINT 778 | DIOL 779 | DIPS 780 | DIPT 781 | DIRE 782 | DIRK 783 | DIRL 784 | DIRT 785 | DISC 786 | DISH 787 | DISK 788 | DISS 789 | DITA 790 | DITE 791 | DITS 792 | DITZ 793 | DIVA 794 | DIVE 795 | DJIN 796 | DOAT 797 | DOBY 798 | DOCK 799 | DOCS 800 | DODO 801 | DOER 802 | DOES 803 | DOFF 804 | DOGE 805 | DOGS 806 | DOGY 807 | DOIT 808 | DOJO 809 | DOLE 810 | DOLL 811 | DOLS 812 | DOLT 813 | DOME 814 | DOMS 815 | DONA 816 | DONE 817 | DONG 818 | DONS 819 | DOOM 820 | DOOR 821 | DOPA 822 | DOPE 823 | DOPY 824 | DORE 825 | DORK 826 | DORM 827 | DORP 828 | DORR 829 | DORS 830 | DORY 831 | DOSE 832 | DOSS 833 | DOST 834 | DOTE 835 | DOTH 836 | DOTS 837 | DOTY 838 | DOUM 839 | DOUR 840 | DOUX 841 | DOVE 842 | DOWN 843 | DOWS 844 | DOXY 845 | DOZE 846 | DOZY 847 | DRAB 848 | DRAG 849 | DRAM 850 | DRAT 851 | DRAW 852 | DRAY 853 | DREE 854 | DREG 855 | DREK 856 | DREW 857 | DRIB 858 | DRIP 859 | DROP 860 | DRUB 861 | DRUG 862 | DRUM 863 | DRYS 864 | DUAD 865 | DUAL 866 | DUBS 867 | DUCE 868 | DUCI 869 | DUCK 870 | DUCT 871 | DUDE 872 | DUDS 873 | DUEL 874 | DUES 875 | DUET 876 | DUFF 877 | DUGS 878 | DUIT 879 | DUKE 880 | DULL 881 | DULY 882 | DUMA 883 | DUMB 884 | DUMP 885 | DUNE 886 | DUNG 887 | DUNK 888 | DUNS 889 | DUNT 890 | DUOS 891 | DUPE 892 | DUPS 893 | DURA 894 | DURE 895 | DURN 896 | DURO 897 | DURR 898 | DUSK 899 | DUST 900 | DUTY 901 | DYAD 902 | DYED 903 | DYER 904 | DYES 905 | DYKE 906 | DYNE 907 | EACH 908 | EARL 909 | EARN 910 | EARS 911 | EASE 912 | EAST 913 | EASY 914 | EATH 915 | EATS 916 | EAUX 917 | EAVE 918 | EBBS 919 | EBON 920 | ECHE 921 | ECHO 922 | ECRU 923 | ECUS 924 | EDDO 925 | EDDY 926 | EDGE 927 | EDGY 928 | EDHS 929 | EDIT 930 | EELS 931 | EELY 932 | EERY 933 | EFFS 934 | EFTS 935 | EGAD 936 | EGAL 937 | EGER 938 | EGGS 939 | EGGY 940 | EGIS 941 | EGOS 942 | EIDE 943 | EKED 944 | EKES 945 | ELAN 946 | ELDS 947 | ELHI 948 | ELKS 949 | ELLS 950 | ELMS 951 | ELMY 952 | ELSE 953 | EMES 954 | EMEU 955 | EMFS 956 | EMIC 957 | EMIR 958 | EMIT 959 | EMUS 960 | EMYD 961 | ENDS 962 | ENGS 963 | ENOL 964 | ENOW 965 | ENVY 966 | EONS 967 | EPEE 968 | EPHA 969 | EPIC 970 | EPOS 971 | ERAS 972 | ERGO 973 | ERGS 974 | ERNE 975 | ERNS 976 | EROS 977 | ERRS 978 | ERST 979 | ESES 980 | ESPY 981 | ETAS 982 | ETCH 983 | ETHS 984 | ETIC 985 | ETNA 986 | ETUI 987 | EURO 988 | EVEN 989 | EVER 990 | EVES 991 | EVIL 992 | EWER 993 | EWES 994 | EXAM 995 | EXEC 996 | EXES 997 | EXIT 998 | EXON 999 | EXPO 1000 | EYAS 1001 | EYED 1002 | EYEN 1003 | EYER 1004 | EYES 1005 | EYNE 1006 | EYRA 1007 | EYRE 1008 | EYRY 1009 | FACE 1010 | FACT 1011 | FADE 1012 | FADO 1013 | FADS 1014 | FAGS 1015 | FAIL 1016 | FAIN 1017 | FAIR 1018 | FAKE 1019 | FALL 1020 | FALX 1021 | FAME 1022 | FANE 1023 | FANG 1024 | FANO 1025 | FANS 1026 | FARD 1027 | FARE 1028 | FARL 1029 | FARM 1030 | FARO 1031 | FART 1032 | FASH 1033 | FAST 1034 | FATE 1035 | FATS 1036 | FAUN 1037 | FAUX 1038 | FAVA 1039 | FAVE 1040 | FAWN 1041 | FAYS 1042 | FAZE 1043 | FEAL 1044 | FEAR 1045 | FEAT 1046 | FECK 1047 | FEDS 1048 | FEED 1049 | FEEL 1050 | FEES 1051 | FEET 1052 | FEHS 1053 | FELL 1054 | FELT 1055 | FEME 1056 | FEMS 1057 | FEND 1058 | FENS 1059 | FEOD 1060 | FERE 1061 | FERN 1062 | FESS 1063 | FETA 1064 | FETE 1065 | FETS 1066 | FEUD 1067 | FEUS 1068 | FIAR 1069 | FIAT 1070 | FIBS 1071 | FICE 1072 | FICO 1073 | FIDO 1074 | FIDS 1075 | FIEF 1076 | FIFE 1077 | FIGS 1078 | FILA 1079 | FILE 1080 | FILL 1081 | FILM 1082 | FILO 1083 | FILS 1084 | FIND 1085 | FINE 1086 | FINK 1087 | FINO 1088 | FINS 1089 | FIRE 1090 | FIRM 1091 | FIRN 1092 | FIRS 1093 | FISC 1094 | FISH 1095 | FIST 1096 | FITS 1097 | FIVE 1098 | FIXT 1099 | FIZZ 1100 | FLAB 1101 | FLAG 1102 | FLAK 1103 | FLAM 1104 | FLAN 1105 | FLAP 1106 | FLAT 1107 | FLAW 1108 | FLAX 1109 | FLAY 1110 | FLEA 1111 | FLED 1112 | FLEE 1113 | FLEW 1114 | FLEX 1115 | FLEY 1116 | FLIC 1117 | FLIP 1118 | FLIT 1119 | FLOC 1120 | FLOE 1121 | FLOG 1122 | FLOP 1123 | FLOW 1124 | FLUB 1125 | FLUE 1126 | FLUS 1127 | FLUX 1128 | FOAL 1129 | FOAM 1130 | FOBS 1131 | FOCI 1132 | FOES 1133 | FOGS 1134 | FOGY 1135 | FOHN 1136 | FOIL 1137 | FOIN 1138 | FOLD 1139 | FOLK 1140 | FOND 1141 | FONS 1142 | FONT 1143 | FOOD 1144 | FOOL 1145 | FOOT 1146 | FOPS 1147 | FORA 1148 | FORB 1149 | FORD 1150 | FORE 1151 | FORK 1152 | FORM 1153 | FORT 1154 | FOSS 1155 | FOUL 1156 | FOUR 1157 | FOWL 1158 | FOXY 1159 | FOYS 1160 | FOZY 1161 | FRAE 1162 | FRAG 1163 | FRAP 1164 | FRAT 1165 | FRAY 1166 | FREE 1167 | FRET 1168 | FRIG 1169 | FRIT 1170 | FRIZ 1171 | FROE 1172 | FROG 1173 | FROM 1174 | FROW 1175 | FRUG 1176 | FUBS 1177 | FUCI 1178 | FUCK 1179 | FUDS 1180 | FUEL 1181 | FUGS 1182 | FUGU 1183 | FUJI 1184 | FULL 1185 | FUME 1186 | FUMY 1187 | FUND 1188 | FUNK 1189 | FUNS 1190 | FURL 1191 | FURS 1192 | FURY 1193 | FUSE 1194 | FUSS 1195 | FUTZ 1196 | FUZE 1197 | FUZZ 1198 | FYCE 1199 | FYKE 1200 | GABS 1201 | GABY 1202 | GADI 1203 | GADS 1204 | GAED 1205 | GAEN 1206 | GAES 1207 | GAFF 1208 | GAGA 1209 | GAGE 1210 | GAGS 1211 | GAIN 1212 | GAIT 1213 | GALA 1214 | GALE 1215 | GALL 1216 | GALS 1217 | GAMA 1218 | GAMB 1219 | GAME 1220 | GAMP 1221 | GAMS 1222 | GAMY 1223 | GANE 1224 | GANG 1225 | GAOL 1226 | GAPE 1227 | GAPS 1228 | GAPY 1229 | GARB 1230 | GARS 1231 | GASH 1232 | GASP 1233 | GAST 1234 | GATE 1235 | GATS 1236 | GAUD 1237 | GAUM 1238 | GAUN 1239 | GAUR 1240 | GAVE 1241 | GAWK 1242 | GAWP 1243 | GAYS 1244 | GAZE 1245 | GEAR 1246 | GECK 1247 | GEDS 1248 | GEED 1249 | GEEK 1250 | GEES 1251 | GEEZ 1252 | GELD 1253 | GELS 1254 | GELT 1255 | GEMS 1256 | GENE 1257 | GENS 1258 | GENT 1259 | GENU 1260 | GERM 1261 | GEST 1262 | GETA 1263 | GETS 1264 | GEUM 1265 | GHAT 1266 | GHEE 1267 | GHIS 1268 | GIBE 1269 | GIBS 1270 | GIDS 1271 | GIED 1272 | GIEN 1273 | GIES 1274 | GIFT 1275 | GIGA 1276 | GIGS 1277 | GILD 1278 | GILL 1279 | GILT 1280 | GIMP 1281 | GINK 1282 | GINS 1283 | GIPS 1284 | GIRD 1285 | GIRL 1286 | GIRN 1287 | GIRO 1288 | GIRT 1289 | GIST 1290 | GITS 1291 | GIVE 1292 | GLAD 1293 | GLED 1294 | GLEE 1295 | GLEG 1296 | GLEN 1297 | GLEY 1298 | GLIA 1299 | GLIB 1300 | GLIM 1301 | GLOB 1302 | GLOM 1303 | GLOP 1304 | GLOW 1305 | GLUE 1306 | GLUG 1307 | GLUM 1308 | GLUT 1309 | GNAR 1310 | GNAT 1311 | GNAW 1312 | GNUS 1313 | GOAD 1314 | GOAL 1315 | GOAS 1316 | GOAT 1317 | GOBO 1318 | GOBS 1319 | GOBY 1320 | GODS 1321 | GOER 1322 | GOES 1323 | GOGO 1324 | GOLD 1325 | GOLF 1326 | GONE 1327 | GONG 1328 | GOOD 1329 | GOOF 1330 | GOOK 1331 | GOON 1332 | GOOP 1333 | GOOS 1334 | GORE 1335 | GORP 1336 | GORY 1337 | GOSH 1338 | GOUT 1339 | GOWD 1340 | GOWK 1341 | GOWN 1342 | GOYS 1343 | GRAB 1344 | GRAD 1345 | GRAM 1346 | GRAN 1347 | GRAT 1348 | GRAY 1349 | GREE 1350 | GREW 1351 | GREY 1352 | GRID 1353 | GRIG 1354 | GRIM 1355 | GRIN 1356 | GRIP 1357 | GRIT 1358 | GROG 1359 | GROT 1360 | GROW 1361 | GRUB 1362 | GRUE 1363 | GRUM 1364 | GUAN 1365 | GUAR 1366 | GUCK 1367 | GUDE 1368 | GUFF 1369 | GUID 1370 | GULF 1371 | GULL 1372 | GULP 1373 | GULS 1374 | GUMS 1375 | GUNK 1376 | GUNS 1377 | GURU 1378 | GUSH 1379 | GUST 1380 | GUTS 1381 | GUVS 1382 | GUYS 1383 | GYBE 1384 | GYMS 1385 | GYPS 1386 | GYRE 1387 | GYRI 1388 | GYRO 1389 | GYVE 1390 | HAAF 1391 | HAAR 1392 | HABU 1393 | HACK 1394 | HADE 1395 | HADJ 1396 | HAED 1397 | HAEM 1398 | HAEN 1399 | HAES 1400 | HAET 1401 | HAFT 1402 | HAGS 1403 | HAHA 1404 | HAHS 1405 | HAIK 1406 | HAIL 1407 | HAIR 1408 | HAJI 1409 | HAJJ 1410 | HAKE 1411 | HALE 1412 | HALF 1413 | HALL 1414 | HALM 1415 | HALO 1416 | HALT 1417 | HAME 1418 | HAMS 1419 | HAND 1420 | HANG 1421 | HANK 1422 | HANT 1423 | HAPS 1424 | HARD 1425 | HARE 1426 | HARK 1427 | HARL 1428 | HARM 1429 | HARP 1430 | HART 1431 | HASH 1432 | HASP 1433 | HAST 1434 | HATE 1435 | HATH 1436 | HATS 1437 | HAUL 1438 | HAUT 1439 | HAVE 1440 | HAWK 1441 | HAWS 1442 | HAYS 1443 | HAZE 1444 | HAZY 1445 | HEAD 1446 | HEAL 1447 | HEAP 1448 | HEAR 1449 | HEAT 1450 | HEBE 1451 | HECK 1452 | HEED 1453 | HEEL 1454 | HEFT 1455 | HEHS 1456 | HEIL 1457 | HEIR 1458 | HELD 1459 | HELL 1460 | HELM 1461 | HELO 1462 | HELP 1463 | HEME 1464 | HEMP 1465 | HEMS 1466 | HENS 1467 | HENT 1468 | HERB 1469 | HERD 1470 | HERE 1471 | HERL 1472 | HERM 1473 | HERN 1474 | HERO 1475 | HERS 1476 | HEST 1477 | HETH 1478 | HETS 1479 | HEWN 1480 | HEWS 1481 | HICK 1482 | HIDE 1483 | HIED 1484 | HIES 1485 | HIGH 1486 | HIKE 1487 | HILA 1488 | HILI 1489 | HILL 1490 | HILT 1491 | HIND 1492 | HINS 1493 | HINT 1494 | HIPS 1495 | HIRE 1496 | HISN 1497 | HISS 1498 | HIST 1499 | HITS 1500 | HIVE 1501 | HOAR 1502 | HOAX 1503 | HOBO 1504 | HOBS 1505 | HOCK 1506 | HODS 1507 | HOED 1508 | HOER 1509 | HOES 1510 | HOGG 1511 | HOGS 1512 | HOKE 1513 | HOLD 1514 | HOLE 1515 | HOLK 1516 | HOLM 1517 | HOLP 1518 | HOLS 1519 | HOLT 1520 | HOLY 1521 | HOME 1522 | HOMO 1523 | HOMY 1524 | HONE 1525 | HONG 1526 | HONK 1527 | HONS 1528 | HOOD 1529 | HOOF 1530 | HOOK 1531 | HOOP 1532 | HOOT 1533 | HOPE 1534 | HOPS 1535 | HORA 1536 | HORN 1537 | HOSE 1538 | HOST 1539 | HOTS 1540 | HOUR 1541 | HOVE 1542 | HOWE 1543 | HOWF 1544 | HOWK 1545 | HOWL 1546 | HOWS 1547 | HOYA 1548 | HOYS 1549 | HUBS 1550 | HUCK 1551 | HUED 1552 | HUES 1553 | HUFF 1554 | HUGE 1555 | HUGS 1556 | HUIC 1557 | HULA 1558 | HULK 1559 | HULL 1560 | HUMP 1561 | HUMS 1562 | HUNG 1563 | HUNH 1564 | HUNK 1565 | HUNS 1566 | HUNT 1567 | HURL 1568 | HURT 1569 | HUSH 1570 | HUSK 1571 | HUTS 1572 | HWAN 1573 | HYLA 1574 | HYMN 1575 | HYPE 1576 | HYPO 1577 | HYPS 1578 | HYTE 1579 | IAMB 1580 | IBEX 1581 | IBIS 1582 | ICED 1583 | ICES 1584 | ICHS 1585 | ICKY 1586 | ICON 1587 | IDEA 1588 | IDEM 1589 | IDES 1590 | IDLE 1591 | IDLY 1592 | IDOL 1593 | IDYL 1594 | IFFY 1595 | IGLU 1596 | IKAT 1597 | IKON 1598 | ILEA 1599 | ILEX 1600 | ILIA 1601 | ILKA 1602 | ILKS 1603 | ILLS 1604 | ILLY 1605 | IMAM 1606 | IMID 1607 | IMMY 1608 | IMPI 1609 | IMPS 1610 | INBY 1611 | INCH 1612 | INFO 1613 | INIA 1614 | INKS 1615 | INKY 1616 | INLY 1617 | INNS 1618 | INRO 1619 | INTI 1620 | INTO 1621 | IONS 1622 | IOTA 1623 | IRED 1624 | IRES 1625 | IRID 1626 | IRIS 1627 | IRKS 1628 | IRON 1629 | ISBA 1630 | ISLE 1631 | ISMS 1632 | ITCH 1633 | ITEM 1634 | IWIS 1635 | IXIA 1636 | IZAR 1637 | JABS 1638 | JACK 1639 | JADE 1640 | JAGG 1641 | JAGS 1642 | JAIL 1643 | JAKE 1644 | JAMB 1645 | JAMS 1646 | JANE 1647 | JAPE 1648 | JARL 1649 | JARS 1650 | JATO 1651 | JAUK 1652 | JAUP 1653 | JAVA 1654 | JAWS 1655 | JAYS 1656 | JAZZ 1657 | JEAN 1658 | JEED 1659 | JEEP 1660 | JEER 1661 | JEES 1662 | JEEZ 1663 | JEFE 1664 | JEHU 1665 | JELL 1666 | JEON 1667 | JERK 1668 | JESS 1669 | JEST 1670 | JETE 1671 | JETS 1672 | JEUX 1673 | JEWS 1674 | JIAO 1675 | JIBB 1676 | JIBE 1677 | JIBS 1678 | JIFF 1679 | JIGS 1680 | JILL 1681 | JILT 1682 | JIMP 1683 | JINK 1684 | JINN 1685 | JINS 1686 | JINX 1687 | JISM 1688 | JIVE 1689 | JOBS 1690 | JOCK 1691 | JOES 1692 | JOEY 1693 | JOGS 1694 | JOHN 1695 | JOIN 1696 | JOKE 1697 | JOKY 1698 | JOLE 1699 | JOLT 1700 | JOSH 1701 | JOSS 1702 | JOTA 1703 | JOTS 1704 | JOUK 1705 | JOWL 1706 | JOWS 1707 | JOYS 1708 | JUBA 1709 | JUBE 1710 | JUDO 1711 | JUGA 1712 | JUGS 1713 | JUJU 1714 | JUKE 1715 | JUMP 1716 | JUNK 1717 | JUPE 1718 | JURA 1719 | JURY 1720 | JUST 1721 | JUTE 1722 | JUTS 1723 | KAAS 1724 | KABS 1725 | KADI 1726 | KAES 1727 | KAFS 1728 | KAGU 1729 | KAIF 1730 | KAIL 1731 | KAIN 1732 | KAKA 1733 | KAKI 1734 | KALE 1735 | KAME 1736 | KAMI 1737 | KANA 1738 | KANE 1739 | KAON 1740 | KAPA 1741 | KAPH 1742 | KARN 1743 | KART 1744 | KATA 1745 | KATS 1746 | KAVA 1747 | KAYO 1748 | KAYS 1749 | KBAR 1750 | KEAS 1751 | KECK 1752 | KEEF 1753 | KEEK 1754 | KEEL 1755 | KEEN 1756 | KEEP 1757 | KEET 1758 | KEFS 1759 | KEGS 1760 | KEIR 1761 | KELP 1762 | KEMP 1763 | KENO 1764 | KENS 1765 | KENT 1766 | KEPI 1767 | KEPS 1768 | KEPT 1769 | KERB 1770 | KERF 1771 | KERN 1772 | KETO 1773 | KEYS 1774 | KHAF 1775 | KHAN 1776 | KHAT 1777 | KHET 1778 | KHIS 1779 | KIBE 1780 | KICK 1781 | KIDS 1782 | KIEF 1783 | KIER 1784 | KIFS 1785 | KIKE 1786 | KILL 1787 | KILN 1788 | KILO 1789 | KILT 1790 | KINA 1791 | KIND 1792 | KINE 1793 | KING 1794 | KINK 1795 | KINO 1796 | KINS 1797 | KIPS 1798 | KIRK 1799 | KIRN 1800 | KIRS 1801 | KISS 1802 | KIST 1803 | KITE 1804 | KITH 1805 | KITS 1806 | KIVA 1807 | KIWI 1808 | KNAP 1809 | KNAR 1810 | KNEE 1811 | KNEW 1812 | KNIT 1813 | KNOB 1814 | KNOP 1815 | KNOT 1816 | KNOW 1817 | KNUR 1818 | KOAN 1819 | KOAS 1820 | KOBO 1821 | KOBS 1822 | KOEL 1823 | KOHL 1824 | KOLA 1825 | KOLO 1826 | KONK 1827 | KOOK 1828 | KOPH 1829 | KOPS 1830 | KORE 1831 | KORS 1832 | KOSS 1833 | KOTO 1834 | KRIS 1835 | KUDO 1836 | KUDU 1837 | KUES 1838 | KURU 1839 | KVAS 1840 | KYAK 1841 | KYAR 1842 | KYAT 1843 | KYTE 1844 | LABS 1845 | LACE 1846 | LACK 1847 | LACS 1848 | LACY 1849 | LADE 1850 | LADS 1851 | LADY 1852 | LAGS 1853 | LAIC 1854 | LAID 1855 | LAIN 1856 | LAIR 1857 | LAKE 1858 | LAKH 1859 | LAKY 1860 | LALL 1861 | LAMA 1862 | LAMB 1863 | LAME 1864 | LAMP 1865 | LAMS 1866 | LAND 1867 | LANE 1868 | LANG 1869 | LANK 1870 | LAPS 1871 | LARD 1872 | LARI 1873 | LARK 1874 | LARS 1875 | LASE 1876 | LASH 1877 | LASS 1878 | LAST 1879 | LATE 1880 | LATH 1881 | LATI 1882 | LATS 1883 | LAUD 1884 | LAVA 1885 | LAVE 1886 | LAVS 1887 | LAWN 1888 | LAWS 1889 | LAYS 1890 | LAZE 1891 | LAZY 1892 | LEAD 1893 | LEAF 1894 | LEAK 1895 | LEAL 1896 | LEAN 1897 | LEAP 1898 | LEAR 1899 | LEAS 1900 | LECH 1901 | LEEK 1902 | LEER 1903 | LEES 1904 | LEET 1905 | LEFT 1906 | LEGS 1907 | LEHR 1908 | LEIS 1909 | LEKE 1910 | LEKS 1911 | LEKU 1912 | LEND 1913 | LENO 1914 | LENS 1915 | LENT 1916 | LEPT 1917 | LESS 1918 | LEST 1919 | LETS 1920 | LEUD 1921 | LEVA 1922 | LEVO 1923 | LEVY 1924 | LEWD 1925 | LEYS 1926 | LIAR 1927 | LIBS 1928 | LICE 1929 | LICH 1930 | LICK 1931 | LIDO 1932 | LIDS 1933 | LIED 1934 | LIEF 1935 | LIEN 1936 | LIER 1937 | LIES 1938 | LIEU 1939 | LIFE 1940 | LIFT 1941 | LIKE 1942 | LILT 1943 | LILY 1944 | LIMA 1945 | LIMB 1946 | LIME 1947 | LIMN 1948 | LIMO 1949 | LIMP 1950 | LIMY 1951 | LINE 1952 | LING 1953 | LINK 1954 | LINN 1955 | LINO 1956 | LINS 1957 | LINT 1958 | LINY 1959 | LION 1960 | LIPS 1961 | LIRA 1962 | LIRE 1963 | LIRI 1964 | LISP 1965 | LIST 1966 | LITE 1967 | LITS 1968 | LITU 1969 | LIVE 1970 | LOAD 1971 | LOAF 1972 | LOAM 1973 | LOAN 1974 | LOBE 1975 | LOBO 1976 | LOBS 1977 | LOCA 1978 | LOCH 1979 | LOCI 1980 | LOCK 1981 | LOCO 1982 | LODE 1983 | LOFT 1984 | LOGE 1985 | LOGO 1986 | LOGS 1987 | LOGY 1988 | LOIN 1989 | LOLL 1990 | LONE 1991 | LONG 1992 | LOOF 1993 | LOOK 1994 | LOOM 1995 | LOON 1996 | LOOP 1997 | LOOS 1998 | LOOT 1999 | LOPE 2000 | LOPS 2001 | LORD 2002 | LORE 2003 | LORN 2004 | LORY 2005 | LOSE 2006 | LOSS 2007 | LOST 2008 | LOTA 2009 | LOTH 2010 | LOTI 2011 | LOTS 2012 | LOUD 2013 | LOUP 2014 | LOUR 2015 | LOUT 2016 | LOVE 2017 | LOWE 2018 | LOWN 2019 | LOWS 2020 | LUAU 2021 | LUBE 2022 | LUCE 2023 | LUCK 2024 | LUDE 2025 | LUES 2026 | LUFF 2027 | LUGE 2028 | LUGS 2029 | LULL 2030 | LULU 2031 | LUMP 2032 | LUMS 2033 | LUNA 2034 | LUNE 2035 | LUNG 2036 | LUNK 2037 | LUNT 2038 | LUNY 2039 | LURE 2040 | LURK 2041 | LUSH 2042 | LUST 2043 | LUTE 2044 | LUTZ 2045 | LUVS 2046 | LUXE 2047 | LWEI 2048 | LYES 2049 | LYNX 2050 | LYRE 2051 | LYSE 2052 | MAAR 2053 | MABE 2054 | MACE 2055 | MACH 2056 | MACK 2057 | MACS 2058 | MADE 2059 | MADS 2060 | MAES 2061 | MAGE 2062 | MAGI 2063 | MAGS 2064 | MAID 2065 | MAIL 2066 | MAIM 2067 | MAIN 2068 | MAIR 2069 | MAKE 2070 | MAKO 2071 | MALE 2072 | MALL 2073 | MALM 2074 | MALT 2075 | MAMA 2076 | MANA 2077 | MANE 2078 | MANO 2079 | MANS 2080 | MANY 2081 | MAPS 2082 | MARC 2083 | MARE 2084 | MARK 2085 | MARL 2086 | MARS 2087 | MART 2088 | MASH 2089 | MASK 2090 | MASS 2091 | MAST 2092 | MATE 2093 | MATH 2094 | MATS 2095 | MATT 2096 | MAUD 2097 | MAUL 2098 | MAUN 2099 | MAUT 2100 | MAWN 2101 | MAWS 2102 | MAXI 2103 | MAYA 2104 | MAYO 2105 | MAYS 2106 | MAZE 2107 | MAZY 2108 | MEAD 2109 | MEAL 2110 | MEAN 2111 | MEAT 2112 | MEED 2113 | MEEK 2114 | MEET 2115 | MELD 2116 | MELL 2117 | MELS 2118 | MELT 2119 | MEMO 2120 | MEMS 2121 | MEND 2122 | MENO 2123 | MENU 2124 | MEOU 2125 | MEOW 2126 | MERE 2127 | MERK 2128 | MERL 2129 | MESA 2130 | MESH 2131 | MESS 2132 | META 2133 | METE 2134 | METH 2135 | MEWL 2136 | MEWS 2137 | MEZE 2138 | MHOS 2139 | MIBS 2140 | MICA 2141 | MICE 2142 | MICK 2143 | MIDI 2144 | MIDS 2145 | MIEN 2146 | MIFF 2147 | MIGG 2148 | MIGS 2149 | MIKE 2150 | MILD 2151 | MILE 2152 | MILK 2153 | MILL 2154 | MILO 2155 | MILS 2156 | MILT 2157 | MIME 2158 | MINA 2159 | MIND 2160 | MINE 2161 | MINI 2162 | MINK 2163 | MINT 2164 | MINX 2165 | MIRE 2166 | MIRI 2167 | MIRK 2168 | MIRS 2169 | MIRY 2170 | MISE 2171 | MISO 2172 | MISS 2173 | MIST 2174 | MITE 2175 | MITT 2176 | MITY 2177 | MIXT 2178 | MOAN 2179 | MOAS 2180 | MOAT 2181 | MOBS 2182 | MOCK 2183 | MOCS 2184 | MODE 2185 | MODI 2186 | MODS 2187 | MOGS 2188 | MOIL 2189 | MOJO 2190 | MOKE 2191 | MOLA 2192 | MOLD 2193 | MOLE 2194 | MOLL 2195 | MOLS 2196 | MOLT 2197 | MOLY 2198 | MOME 2199 | MOMI 2200 | MOMS 2201 | MONK 2202 | MONO 2203 | MONS 2204 | MONY 2205 | MOOD 2206 | MOOL 2207 | MOON 2208 | MOOR 2209 | MOOS 2210 | MOOT 2211 | MOPE 2212 | MOPS 2213 | MOPY 2214 | MORA 2215 | MORE 2216 | MORN 2217 | MORS 2218 | MORT 2219 | MOSK 2220 | MOSS 2221 | MOST 2222 | MOTE 2223 | MOTH 2224 | MOTS 2225 | MOTT 2226 | MOUE 2227 | MOVE 2228 | MOWN 2229 | MOWS 2230 | MOXA 2231 | MOZO 2232 | MUCH 2233 | MUCK 2234 | MUDS 2235 | MUFF 2236 | MUGG 2237 | MUGS 2238 | MULE 2239 | MULL 2240 | MUMM 2241 | MUMP 2242 | MUMS 2243 | MUMU 2244 | MUNI 2245 | MUNS 2246 | MUON 2247 | MURA 2248 | MURE 2249 | MURK 2250 | MURR 2251 | MUSE 2252 | MUSH 2253 | MUSK 2254 | MUSS 2255 | MUST 2256 | MUTE 2257 | MUTS 2258 | MUTT 2259 | MYNA 2260 | MYTH 2261 | NAAN 2262 | NABE 2263 | NABS 2264 | NADA 2265 | NAGS 2266 | NAIF 2267 | NAIL 2268 | NAME 2269 | NANA 2270 | NANS 2271 | NAOI 2272 | NAOS 2273 | NAPE 2274 | NAPS 2275 | NARC 2276 | NARD 2277 | NARK 2278 | NARY 2279 | NAVE 2280 | NAVY 2281 | NAYS 2282 | NAZI 2283 | NEAP 2284 | NEAR 2285 | NEAT 2286 | NEBS 2287 | NECK 2288 | NEED 2289 | NEEM 2290 | NEEP 2291 | NEIF 2292 | NEMA 2293 | NENE 2294 | NEON 2295 | NERD 2296 | NESS 2297 | NEST 2298 | NETS 2299 | NETT 2300 | NEUK 2301 | NEUM 2302 | NEVE 2303 | NEVI 2304 | NEWS 2305 | NEWT 2306 | NEXT 2307 | NIBS 2308 | NICE 2309 | NICK 2310 | NIDE 2311 | NIDI 2312 | NIGH 2313 | NILL 2314 | NILS 2315 | NIMS 2316 | NINE 2317 | NIPA 2318 | NIPS 2319 | NISI 2320 | NITE 2321 | NITS 2322 | NIXE 2323 | NIXY 2324 | NOBS 2325 | NOCK 2326 | NODE 2327 | NODI 2328 | NODS 2329 | NOEL 2330 | NOES 2331 | NOGG 2332 | NOGS 2333 | NOIL 2334 | NOIR 2335 | NOLO 2336 | NOMA 2337 | NOME 2338 | NOMS 2339 | NONA 2340 | NONE 2341 | NOOK 2342 | NOON 2343 | NOPE 2344 | NORI 2345 | NORM 2346 | NOSE 2347 | NOSH 2348 | NOSY 2349 | NOTA 2350 | NOTE 2351 | NOUN 2352 | NOUS 2353 | NOVA 2354 | NOWS 2355 | NOWT 2356 | NUBS 2357 | NUDE 2358 | NUKE 2359 | NULL 2360 | NUMB 2361 | NUNS 2362 | NURD 2363 | NURL 2364 | NUTS 2365 | OAFS 2366 | OAKS 2367 | OARS 2368 | OAST 2369 | OATH 2370 | OATS 2371 | OBES 2372 | OBEY 2373 | OBIA 2374 | OBIS 2375 | OBIT 2376 | OBOE 2377 | OBOL 2378 | OCAS 2379 | ODDS 2380 | ODEA 2381 | ODES 2382 | ODIC 2383 | ODOR 2384 | ODYL 2385 | OFAY 2386 | OFFS 2387 | OGAM 2388 | OGEE 2389 | OGLE 2390 | OGRE 2391 | OHED 2392 | OHIA 2393 | OHMS 2394 | OILS 2395 | OILY 2396 | OINK 2397 | OKAS 2398 | OKAY 2399 | OKEH 2400 | OKES 2401 | OKRA 2402 | OLDS 2403 | OLDY 2404 | OLEA 2405 | OLEO 2406 | OLES 2407 | OLIO 2408 | OLLA 2409 | OMEN 2410 | OMER 2411 | OMIT 2412 | ONCE 2413 | ONES 2414 | ONLY 2415 | ONTO 2416 | ONUS 2417 | ONYX 2418 | OOHS 2419 | OOPS 2420 | OOTS 2421 | OOZE 2422 | OOZY 2423 | OPAH 2424 | OPAL 2425 | OPED 2426 | OPEN 2427 | OPES 2428 | OPTS 2429 | OPUS 2430 | ORAD 2431 | ORAL 2432 | ORBS 2433 | ORBY 2434 | ORCA 2435 | ORCS 2436 | ORDO 2437 | ORES 2438 | ORGY 2439 | ORLE 2440 | ORRA 2441 | ORTS 2442 | ORYX 2443 | ORZO 2444 | OSAR 2445 | OSES 2446 | OSSA 2447 | OTIC 2448 | OTTO 2449 | OUCH 2450 | OUDS 2451 | OUPH 2452 | OURS 2453 | OUST 2454 | OUTS 2455 | OUZO 2456 | OVAL 2457 | OVEN 2458 | OVER 2459 | OVUM 2460 | OWED 2461 | OWES 2462 | OWLS 2463 | OWNS 2464 | OWSE 2465 | OXEN 2466 | OXES 2467 | OXID 2468 | OXIM 2469 | OYER 2470 | OYES 2471 | OYEZ 2472 | PACA 2473 | PACE 2474 | PACK 2475 | PACS 2476 | PACT 2477 | PADI 2478 | PADS 2479 | PAGE 2480 | PAID 2481 | PAIK 2482 | PAIL 2483 | PAIN 2484 | PAIR 2485 | PALE 2486 | PALL 2487 | PALM 2488 | PALP 2489 | PALS 2490 | PALY 2491 | PAMS 2492 | PANE 2493 | PANG 2494 | PANS 2495 | PANT 2496 | PAPA 2497 | PAPS 2498 | PARA 2499 | PARD 2500 | PARE 2501 | PARK 2502 | PARR 2503 | PARS 2504 | PART 2505 | PASE 2506 | PASH 2507 | PASS 2508 | PAST 2509 | PATE 2510 | PATH 2511 | PATS 2512 | PATY 2513 | PAVE 2514 | PAWL 2515 | PAWN 2516 | PAWS 2517 | PAYS 2518 | PEAG 2519 | PEAK 2520 | PEAL 2521 | PEAN 2522 | PEAR 2523 | PEAS 2524 | PEAT 2525 | PECH 2526 | PECK 2527 | PECS 2528 | PEDS 2529 | PEED 2530 | PEEK 2531 | PEEL 2532 | PEEN 2533 | PEEP 2534 | PEER 2535 | PEES 2536 | PEGS 2537 | PEHS 2538 | PEIN 2539 | PEKE 2540 | PELE 2541 | PELF 2542 | PELT 2543 | PEND 2544 | PENS 2545 | PENT 2546 | PEON 2547 | PEPO 2548 | PEPS 2549 | PERI 2550 | PERK 2551 | PERM 2552 | PERT 2553 | PESO 2554 | PEST 2555 | PETS 2556 | PEWS 2557 | PFFT 2558 | PFUI 2559 | PHAT 2560 | PHEW 2561 | PHIS 2562 | PHIZ 2563 | PHON 2564 | PHOT 2565 | PHUT 2566 | PIAL 2567 | PIAN 2568 | PIAS 2569 | PICA 2570 | PICE 2571 | PICK 2572 | PICS 2573 | PIED 2574 | PIER 2575 | PIES 2576 | PIGS 2577 | PIKA 2578 | PIKE 2579 | PIKI 2580 | PILE 2581 | PILI 2582 | PILL 2583 | PILY 2584 | PIMA 2585 | PIMP 2586 | PINA 2587 | PINE 2588 | PING 2589 | PINK 2590 | PINS 2591 | PINT 2592 | PINY 2593 | PION 2594 | PIPE 2595 | PIPS 2596 | PIPY 2597 | PIRN 2598 | PISH 2599 | PISO 2600 | PISS 2601 | PITA 2602 | PITH 2603 | PITS 2604 | PITY 2605 | PIXY 2606 | PLAN 2607 | PLAT 2608 | PLAY 2609 | PLEA 2610 | PLEB 2611 | PLED 2612 | PLEW 2613 | PLIE 2614 | PLOD 2615 | PLOP 2616 | PLOT 2617 | PLOW 2618 | PLOY 2619 | PLUG 2620 | PLUM 2621 | PLUS 2622 | POCK 2623 | POCO 2624 | PODS 2625 | POEM 2626 | POET 2627 | POGY 2628 | POIS 2629 | POKE 2630 | POKY 2631 | POLE 2632 | POLL 2633 | POLO 2634 | POLS 2635 | POLY 2636 | POME 2637 | POMP 2638 | POMS 2639 | POND 2640 | PONE 2641 | PONG 2642 | PONS 2643 | PONY 2644 | POOD 2645 | POOF 2646 | POOH 2647 | POOL 2648 | POON 2649 | POOP 2650 | POOR 2651 | POPE 2652 | POPS 2653 | PORE 2654 | PORK 2655 | PORN 2656 | PORT 2657 | POSE 2658 | POSH 2659 | POST 2660 | POSY 2661 | POTS 2662 | POUF 2663 | POUR 2664 | POUT 2665 | POWS 2666 | PRAM 2667 | PRAO 2668 | PRAT 2669 | PRAU 2670 | PRAY 2671 | PREE 2672 | PREP 2673 | PREX 2674 | PREY 2675 | PREZ 2676 | PRIG 2677 | PRIM 2678 | PROA 2679 | PROD 2680 | PROF 2681 | PROG 2682 | PROM 2683 | PROP 2684 | PROS 2685 | PROW 2686 | PSIS 2687 | PSST 2688 | PUBS 2689 | PUCE 2690 | PUCK 2691 | PUDS 2692 | PUFF 2693 | PUGH 2694 | PUGS 2695 | PUJA 2696 | PUKE 2697 | PULA 2698 | PULE 2699 | PULI 2700 | PULL 2701 | PULP 2702 | PULS 2703 | PUMA 2704 | PUMP 2705 | PUNA 2706 | PUNG 2707 | PUNK 2708 | PUNS 2709 | PUNT 2710 | PUNY 2711 | PUPA 2712 | PUPS 2713 | PURE 2714 | PURI 2715 | PURL 2716 | PURR 2717 | PURS 2718 | PUSH 2719 | PUSS 2720 | PUTS 2721 | PUTT 2722 | PUTZ 2723 | PYAS 2724 | PYES 2725 | PYIC 2726 | PYIN 2727 | PYRE 2728 | QAID 2729 | QATS 2730 | QOPH 2731 | QUAD 2732 | QUAG 2733 | QUAI 2734 | QUAY 2735 | QUEY 2736 | QUID 2737 | QUIN 2738 | QUIP 2739 | QUIT 2740 | QUIZ 2741 | QUOD 2742 | RACE 2743 | RACK 2744 | RACY 2745 | RADS 2746 | RAFF 2747 | RAFT 2748 | RAGA 2749 | RAGE 2750 | RAGI 2751 | RAGS 2752 | RAIA 2753 | RAID 2754 | RAIL 2755 | RAIN 2756 | RAJA 2757 | RAKE 2758 | RAKI 2759 | RALE 2760 | RAMI 2761 | RAMP 2762 | RAMS 2763 | RAND 2764 | RANG 2765 | RANI 2766 | RANK 2767 | RANT 2768 | RAPE 2769 | RAPS 2770 | RAPT 2771 | RARE 2772 | RASE 2773 | RASH 2774 | RASP 2775 | RATE 2776 | RATH 2777 | RATO 2778 | RATS 2779 | RAVE 2780 | RAWS 2781 | RAYA 2782 | RAYS 2783 | RAZE 2784 | RAZZ 2785 | READ 2786 | REAL 2787 | REAM 2788 | REAP 2789 | REAR 2790 | REBS 2791 | RECK 2792 | RECS 2793 | REDD 2794 | REDE 2795 | REDO 2796 | REDS 2797 | REED 2798 | REEF 2799 | REEK 2800 | REEL 2801 | REES 2802 | REFS 2803 | REFT 2804 | REGS 2805 | REIF 2806 | REIN 2807 | REIS 2808 | RELY 2809 | REMS 2810 | REND 2811 | RENT 2812 | REPO 2813 | REPP 2814 | REPS 2815 | RESH 2816 | REST 2817 | RETE 2818 | RETS 2819 | REVS 2820 | RHEA 2821 | RHOS 2822 | RHUS 2823 | RIAL 2824 | RIAS 2825 | RIBS 2826 | RICE 2827 | RICH 2828 | RICK 2829 | RIDE 2830 | RIDS 2831 | RIEL 2832 | RIFE 2833 | RIFF 2834 | RIFS 2835 | RIFT 2836 | RIGS 2837 | RILE 2838 | RILL 2839 | RIME 2840 | RIMS 2841 | RIMY 2842 | RIND 2843 | RING 2844 | RINK 2845 | RINS 2846 | RIOT 2847 | RIPE 2848 | RIPS 2849 | RISE 2850 | RISK 2851 | RITE 2852 | RITZ 2853 | RIVE 2854 | ROAD 2855 | ROAM 2856 | ROAN 2857 | ROAR 2858 | ROBE 2859 | ROBS 2860 | ROCK 2861 | ROCS 2862 | RODE 2863 | RODS 2864 | ROES 2865 | ROIL 2866 | ROLE 2867 | ROLF 2868 | ROLL 2869 | ROMP 2870 | ROMS 2871 | ROOD 2872 | ROOF 2873 | ROOK 2874 | ROOM 2875 | ROOT 2876 | ROPE 2877 | ROPY 2878 | ROSE 2879 | ROSY 2880 | ROTA 2881 | ROTE 2882 | ROTI 2883 | ROTL 2884 | ROTO 2885 | ROTS 2886 | ROUE 2887 | ROUP 2888 | ROUT 2889 | ROUX 2890 | ROVE 2891 | ROWS 2892 | RUBE 2893 | RUBS 2894 | RUBY 2895 | RUCK 2896 | RUDD 2897 | RUDE 2898 | RUED 2899 | RUER 2900 | RUES 2901 | RUFF 2902 | RUGA 2903 | RUGS 2904 | RUIN 2905 | RULE 2906 | RULY 2907 | RUMP 2908 | RUMS 2909 | RUNE 2910 | RUNG 2911 | RUNS 2912 | RUNT 2913 | RUSE 2914 | RUSH 2915 | RUSK 2916 | RUST 2917 | RUTH 2918 | RUTS 2919 | RYAS 2920 | RYES 2921 | RYKE 2922 | RYND 2923 | RYOT 2924 | SABE 2925 | SABS 2926 | SACK 2927 | SACS 2928 | SADE 2929 | SADI 2930 | SAFE 2931 | SAGA 2932 | SAGE 2933 | SAGO 2934 | SAGS 2935 | SAGY 2936 | SAID 2937 | SAIL 2938 | SAIN 2939 | SAKE 2940 | SAKI 2941 | SALE 2942 | SALL 2943 | SALP 2944 | SALS 2945 | SALT 2946 | SAME 2947 | SAMP 2948 | SAND 2949 | SANE 2950 | SANG 2951 | SANK 2952 | SANS 2953 | SAPS 2954 | SARD 2955 | SARI 2956 | SARK 2957 | SASH 2958 | SASS 2959 | SATE 2960 | SATI 2961 | SAUL 2962 | SAVE 2963 | SAWN 2964 | SAWS 2965 | SAYS 2966 | SCAB 2967 | SCAD 2968 | SCAG 2969 | SCAM 2970 | SCAN 2971 | SCAR 2972 | SCAT 2973 | SCOP 2974 | SCOT 2975 | SCOW 2976 | SCRY 2977 | SCUD 2978 | SCUM 2979 | SCUP 2980 | SCUT 2981 | SEAL 2982 | SEAM 2983 | SEAR 2984 | SEAS 2985 | SEAT 2986 | SECS 2987 | SECT 2988 | SEED 2989 | SEEK 2990 | SEEL 2991 | SEEM 2992 | SEEN 2993 | SEEP 2994 | SEER 2995 | SEES 2996 | SEGO 2997 | SEGS 2998 | SEIF 2999 | SEIS 3000 | SELF 3001 | SELL 3002 | SELS 3003 | SEME 3004 | SEMI 3005 | SEND 3006 | SENE 3007 | SENT 3008 | SEPT 3009 | SERA 3010 | SERE 3011 | SERF 3012 | SERS 3013 | SETA 3014 | SETS 3015 | SETT 3016 | SEWN 3017 | SEWS 3018 | SEXT 3019 | SEXY 3020 | SHAD 3021 | SHAG 3022 | SHAH 3023 | SHAM 3024 | SHAT 3025 | SHAW 3026 | SHAY 3027 | SHEA 3028 | SHED 3029 | SHES 3030 | SHEW 3031 | SHIM 3032 | SHIN 3033 | SHIP 3034 | SHIT 3035 | SHIV 3036 | SHMO 3037 | SHOD 3038 | SHOE 3039 | SHOG 3040 | SHOO 3041 | SHOP 3042 | SHOT 3043 | SHOW 3044 | SHRI 3045 | SHUL 3046 | SHUN 3047 | SHUT 3048 | SIAL 3049 | SIBB 3050 | SIBS 3051 | SICE 3052 | SICK 3053 | SICS 3054 | SIDE 3055 | SIFT 3056 | SIGH 3057 | SIGN 3058 | SIKE 3059 | SILD 3060 | SILK 3061 | SILL 3062 | SILO 3063 | SILT 3064 | SIMA 3065 | SIMP 3066 | SIMS 3067 | SINE 3068 | SING 3069 | SINH 3070 | SINK 3071 | SINS 3072 | SIPE 3073 | SIPS 3074 | SIRE 3075 | SIRS 3076 | SITE 3077 | SITH 3078 | SITS 3079 | SIZE 3080 | SIZY 3081 | SKAG 3082 | SKAS 3083 | SKAT 3084 | SKEE 3085 | SKEG 3086 | SKEP 3087 | SKEW 3088 | SKID 3089 | SKIM 3090 | SKIN 3091 | SKIP 3092 | SKIS 3093 | SKIT 3094 | SKUA 3095 | SLAB 3096 | SLAG 3097 | SLAM 3098 | SLAP 3099 | SLAT 3100 | SLAW 3101 | SLAY 3102 | SLED 3103 | SLEW 3104 | SLID 3105 | SLIM 3106 | SLIP 3107 | SLIT 3108 | SLOB 3109 | SLOE 3110 | SLOG 3111 | SLOP 3112 | SLOT 3113 | SLOW 3114 | SLUB 3115 | SLUE 3116 | SLUG 3117 | SLUM 3118 | SLUR 3119 | SLUT 3120 | SMEW 3121 | SMIT 3122 | SMOG 3123 | SMUG 3124 | SMUT 3125 | SNAG 3126 | SNAP 3127 | SNAW 3128 | SNED 3129 | SNIB 3130 | SNIP 3131 | SNIT 3132 | SNOB 3133 | SNOG 3134 | SNOT 3135 | SNOW 3136 | SNUB 3137 | SNUG 3138 | SNYE 3139 | SOAK 3140 | SOAP 3141 | SOAR 3142 | SOBS 3143 | SOCK 3144 | SODA 3145 | SODS 3146 | SOFA 3147 | SOFT 3148 | SOIL 3149 | SOJA 3150 | SOKE 3151 | SOLA 3152 | SOLD 3153 | SOLE 3154 | SOLI 3155 | SOLO 3156 | SOLS 3157 | SOMA 3158 | SOME 3159 | SONE 3160 | SONG 3161 | SONS 3162 | SOOK 3163 | SOON 3164 | SOOT 3165 | SOPH 3166 | SOPS 3167 | SORA 3168 | SORB 3169 | SORD 3170 | SORE 3171 | SORI 3172 | SORN 3173 | SORT 3174 | SOTH 3175 | SOTS 3176 | SOUK 3177 | SOUL 3178 | SOUP 3179 | SOUR 3180 | SOUS 3181 | SOWN 3182 | SOWS 3183 | SOYA 3184 | SOYS 3185 | SPAE 3186 | SPAN 3187 | SPAR 3188 | SPAS 3189 | SPAT 3190 | SPAY 3191 | SPAZ 3192 | SPEC 3193 | SPED 3194 | SPEW 3195 | SPIC 3196 | SPIK 3197 | SPIN 3198 | SPIT 3199 | SPIV 3200 | SPOT 3201 | SPRY 3202 | SPUD 3203 | SPUE 3204 | SPUN 3205 | SPUR 3206 | SRIS 3207 | STAB 3208 | STAG 3209 | STAR 3210 | STAT 3211 | STAW 3212 | STAY 3213 | STEM 3214 | STEP 3215 | STET 3216 | STEW 3217 | STEY 3218 | STIR 3219 | STOA 3220 | STOB 3221 | STOP 3222 | STOW 3223 | STUB 3224 | STUD 3225 | STUM 3226 | STUN 3227 | STYE 3228 | SUBA 3229 | SUBS 3230 | SUCH 3231 | SUCK 3232 | SUDD 3233 | SUDS 3234 | SUED 3235 | SUER 3236 | SUES 3237 | SUET 3238 | SUGH 3239 | SUIT 3240 | SULK 3241 | SULU 3242 | SUMO 3243 | SUMP 3244 | SUMS 3245 | SUNG 3246 | SUNK 3247 | SUNN 3248 | SUNS 3249 | SUPE 3250 | SUPS 3251 | SUQS 3252 | SURA 3253 | SURD 3254 | SURE 3255 | SURF 3256 | SUSS 3257 | SWAB 3258 | SWAG 3259 | SWAM 3260 | SWAN 3261 | SWAP 3262 | SWAT 3263 | SWAY 3264 | SWIG 3265 | SWIM 3266 | SWOB 3267 | SWOP 3268 | SWOT 3269 | SWUM 3270 | SYBO 3271 | SYCE 3272 | SYKE 3273 | SYLI 3274 | SYNC 3275 | SYNE 3276 | SYPH 3277 | TABS 3278 | TABU 3279 | TACE 3280 | TACH 3281 | TACK 3282 | TACO 3283 | TACT 3284 | TADS 3285 | TAEL 3286 | TAGS 3287 | TAHR 3288 | TAIL 3289 | TAIN 3290 | TAKA 3291 | TAKE 3292 | TALA 3293 | TALC 3294 | TALE 3295 | TALI 3296 | TALK 3297 | TALL 3298 | TAME 3299 | TAMP 3300 | TAMS 3301 | TANG 3302 | TANK 3303 | TANS 3304 | TAOS 3305 | TAPA 3306 | TAPE 3307 | TAPS 3308 | TARE 3309 | TARN 3310 | TARO 3311 | TARP 3312 | TARS 3313 | TART 3314 | TASK 3315 | TASS 3316 | TATE 3317 | TATS 3318 | TAUS 3319 | TAUT 3320 | TAVS 3321 | TAWS 3322 | TAXA 3323 | TAXI 3324 | TEAK 3325 | TEAL 3326 | TEAM 3327 | TEAR 3328 | TEAS 3329 | TEAT 3330 | TEDS 3331 | TEED 3332 | TEEL 3333 | TEEM 3334 | TEEN 3335 | TEES 3336 | TEFF 3337 | TEGS 3338 | TELA 3339 | TELE 3340 | TELL 3341 | TELS 3342 | TEMP 3343 | TEND 3344 | TENS 3345 | TENT 3346 | TEPA 3347 | TERM 3348 | TERN 3349 | TEST 3350 | TETH 3351 | TETS 3352 | TEWS 3353 | TEXT 3354 | THAE 3355 | THAN 3356 | THAT 3357 | THAW 3358 | THEE 3359 | THEM 3360 | THEN 3361 | THEW 3362 | THEY 3363 | THIN 3364 | THIO 3365 | THIR 3366 | THIS 3367 | THOU 3368 | THRO 3369 | THRU 3370 | THUD 3371 | THUG 3372 | THUS 3373 | TICK 3374 | TICS 3375 | TIDE 3376 | TIDY 3377 | TIED 3378 | TIER 3379 | TIES 3380 | TIFF 3381 | TIKE 3382 | TIKI 3383 | TILE 3384 | TILL 3385 | TILS 3386 | TILT 3387 | TIME 3388 | TINE 3389 | TING 3390 | TINS 3391 | TINT 3392 | TINY 3393 | TIPI 3394 | TIPS 3395 | TIRE 3396 | TIRL 3397 | TIRO 3398 | TITI 3399 | TITS 3400 | TIVY 3401 | TOAD 3402 | TOBY 3403 | TODS 3404 | TODY 3405 | TOEA 3406 | TOED 3407 | TOES 3408 | TOFF 3409 | TOFT 3410 | TOFU 3411 | TOGA 3412 | TOGS 3413 | TOIL 3414 | TOIT 3415 | TOKE 3416 | TOLA 3417 | TOLD 3418 | TOLE 3419 | TOLL 3420 | TOLU 3421 | TOMB 3422 | TOME 3423 | TOMS 3424 | TONE 3425 | TONG 3426 | TONS 3427 | TONY 3428 | TOOK 3429 | TOOL 3430 | TOOM 3431 | TOON 3432 | TOOT 3433 | TOPE 3434 | TOPH 3435 | TOPI 3436 | TOPS 3437 | TORA 3438 | TORC 3439 | TORE 3440 | TORI 3441 | TORN 3442 | TORO 3443 | TORR 3444 | TORS 3445 | TORT 3446 | TORY 3447 | TOSH 3448 | TOSS 3449 | TOST 3450 | TOTE 3451 | TOTS 3452 | TOUR 3453 | TOUT 3454 | TOWN 3455 | TOWS 3456 | TOWY 3457 | TOYO 3458 | TOYS 3459 | TRAD 3460 | TRAM 3461 | TRAP 3462 | TRAY 3463 | TREE 3464 | TREF 3465 | TREK 3466 | TRET 3467 | TREY 3468 | TRIG 3469 | TRIM 3470 | TRIO 3471 | TRIP 3472 | TROD 3473 | TROP 3474 | TROT 3475 | TROW 3476 | TROY 3477 | TRUE 3478 | TRUG 3479 | TSAR 3480 | TSKS 3481 | TUBA 3482 | TUBE 3483 | TUBS 3484 | TUCK 3485 | TUFA 3486 | TUFF 3487 | TUFT 3488 | TUGS 3489 | TUIS 3490 | TULE 3491 | TUMP 3492 | TUNA 3493 | TUNE 3494 | TUNG 3495 | TUNS 3496 | TUPS 3497 | TURD 3498 | TURF 3499 | TURK 3500 | TURN 3501 | TUSH 3502 | TUSK 3503 | TUTS 3504 | TUTU 3505 | TWAE 3506 | TWAS 3507 | TWAT 3508 | TWEE 3509 | TWIG 3510 | TWIN 3511 | TWIT 3512 | TWOS 3513 | TYEE 3514 | TYER 3515 | TYES 3516 | TYKE 3517 | TYNE 3518 | TYPE 3519 | TYPO 3520 | TYPP 3521 | TYPY 3522 | TYRE 3523 | TYRO 3524 | TZAR 3525 | UDOS 3526 | UGHS 3527 | UGLY 3528 | UKES 3529 | ULAN 3530 | ULNA 3531 | ULUS 3532 | ULVA 3533 | UMBO 3534 | UMPS 3535 | UNAI 3536 | UNAU 3537 | UNBE 3538 | UNCI 3539 | UNCO 3540 | UNDE 3541 | UNDO 3542 | UNDY 3543 | UNIT 3544 | UNTO 3545 | UPAS 3546 | UPBY 3547 | UPDO 3548 | UPON 3549 | URBS 3550 | URDS 3551 | UREA 3552 | URGE 3553 | URIC 3554 | URNS 3555 | URSA 3556 | URUS 3557 | USED 3558 | USER 3559 | USES 3560 | UTAS 3561 | UVEA 3562 | VACS 3563 | VAGI 3564 | VAIL 3565 | VAIN 3566 | VAIR 3567 | VALE 3568 | VAMP 3569 | VANE 3570 | VANG 3571 | VANS 3572 | VARA 3573 | VARS 3574 | VARY 3575 | VASA 3576 | VASE 3577 | VAST 3578 | VATS 3579 | VATU 3580 | VAUS 3581 | VAVS 3582 | VAWS 3583 | VEAL 3584 | VEEP 3585 | VEER 3586 | VEES 3587 | VEIL 3588 | VEIN 3589 | VELA 3590 | VELD 3591 | VENA 3592 | VEND 3593 | VENT 3594 | VERA 3595 | VERB 3596 | VERT 3597 | VERY 3598 | VEST 3599 | VETO 3600 | VETS 3601 | VEXT 3602 | VIAL 3603 | VIBE 3604 | VICE 3605 | VIDE 3606 | VIED 3607 | VIER 3608 | VIES 3609 | VIEW 3610 | VIGA 3611 | VIGS 3612 | VILE 3613 | VILL 3614 | VIMS 3615 | VINA 3616 | VINE 3617 | VINO 3618 | VINY 3619 | VIOL 3620 | VIRL 3621 | VISA 3622 | VISE 3623 | VITA 3624 | VIVA 3625 | VIVE 3626 | VOES 3627 | VOID 3628 | VOLE 3629 | VOLT 3630 | VOTE 3631 | VOWS 3632 | VROW 3633 | VUGG 3634 | VUGH 3635 | VUGS 3636 | WABS 3637 | WACK 3638 | WADE 3639 | WADI 3640 | WADS 3641 | WADY 3642 | WAES 3643 | WAFF 3644 | WAFT 3645 | WAGE 3646 | WAGS 3647 | WAIF 3648 | WAIL 3649 | WAIN 3650 | WAIR 3651 | WAIT 3652 | WAKE 3653 | WALE 3654 | WALK 3655 | WALL 3656 | WALY 3657 | WAME 3658 | WAND 3659 | WANE 3660 | WANS 3661 | WANT 3662 | WANY 3663 | WAPS 3664 | WARD 3665 | WARE 3666 | WARK 3667 | WARM 3668 | WARN 3669 | WARP 3670 | WARS 3671 | WART 3672 | WARY 3673 | WASH 3674 | WASP 3675 | WAST 3676 | WATS 3677 | WATT 3678 | WAUK 3679 | WAUL 3680 | WAUR 3681 | WAVE 3682 | WAVY 3683 | WAWL 3684 | WAWS 3685 | WAXY 3686 | WAYS 3687 | WEAK 3688 | WEAL 3689 | WEAN 3690 | WEAR 3691 | WEBS 3692 | WEDS 3693 | WEED 3694 | WEEK 3695 | WEEL 3696 | WEEN 3697 | WEEP 3698 | WEER 3699 | WEES 3700 | WEET 3701 | WEFT 3702 | WEIR 3703 | WEKA 3704 | WELD 3705 | WELL 3706 | WELT 3707 | WEND 3708 | WENS 3709 | WENT 3710 | WEPT 3711 | WERE 3712 | WERT 3713 | WEST 3714 | WETS 3715 | WHAM 3716 | WHAP 3717 | WHAT 3718 | WHEE 3719 | WHEN 3720 | WHET 3721 | WHEW 3722 | WHEY 3723 | WHID 3724 | WHIG 3725 | WHIM 3726 | WHIN 3727 | WHIP 3728 | WHIR 3729 | WHIT 3730 | WHIZ 3731 | WHOA 3732 | WHOM 3733 | WHOP 3734 | WHYS 3735 | WICH 3736 | WICK 3737 | WIDE 3738 | WIFE 3739 | WIGS 3740 | WILD 3741 | WILE 3742 | WILL 3743 | WILT 3744 | WILY 3745 | WIMP 3746 | WIND 3747 | WINE 3748 | WING 3749 | WINK 3750 | WINO 3751 | WINS 3752 | WINY 3753 | WIPE 3754 | WIRE 3755 | WIRY 3756 | WISE 3757 | WISH 3758 | WISP 3759 | WISS 3760 | WIST 3761 | WITE 3762 | WITH 3763 | WITS 3764 | WIVE 3765 | WOAD 3766 | WOES 3767 | WOGS 3768 | WOKE 3769 | WOKS 3770 | WOLD 3771 | WOLF 3772 | WOMB 3773 | WONK 3774 | WONS 3775 | WONT 3776 | WOOD 3777 | WOOF 3778 | WOOL 3779 | WOOS 3780 | WOPS 3781 | WORD 3782 | WORE 3783 | WORK 3784 | WORM 3785 | WORN 3786 | WORT 3787 | WOST 3788 | WOTS 3789 | WOVE 3790 | WOWS 3791 | WRAP 3792 | WREN 3793 | WRIT 3794 | WUSS 3795 | WYCH 3796 | WYES 3797 | WYLE 3798 | WYND 3799 | WYNN 3800 | WYNS 3801 | WYTE 3802 | XYST 3803 | YACK 3804 | YAFF 3805 | YAGI 3806 | YAKS 3807 | YALD 3808 | YAMS 3809 | YANG 3810 | YANK 3811 | YAPS 3812 | YARD 3813 | YARE 3814 | YARN 3815 | YAUD 3816 | YAUP 3817 | YAWL 3818 | YAWN 3819 | YAWP 3820 | YAWS 3821 | YAYS 3822 | YEAH 3823 | YEAN 3824 | YEAR 3825 | YEAS 3826 | YECH 3827 | YEGG 3828 | YELD 3829 | YELK 3830 | YELL 3831 | YELP 3832 | YENS 3833 | YERK 3834 | YETI 3835 | YETT 3836 | YEUK 3837 | YEWS 3838 | YIDS 3839 | YILL 3840 | YINS 3841 | YIPE 3842 | YIPS 3843 | YIRD 3844 | YIRR 3845 | YLEM 3846 | YOBS 3847 | YOCK 3848 | YODH 3849 | YODS 3850 | YOGA 3851 | YOGH 3852 | YOGI 3853 | YOKE 3854 | YOKS 3855 | YOLK 3856 | YOND 3857 | YONI 3858 | YORE 3859 | YOUR 3860 | YOWE 3861 | YOWL 3862 | YOWS 3863 | YUAN 3864 | YUCA 3865 | YUCH 3866 | YUCK 3867 | YUGA 3868 | YUKS 3869 | YULE 3870 | YUPS 3871 | YURT 3872 | YWIS 3873 | ZAGS 3874 | ZANY 3875 | ZAPS 3876 | ZARF 3877 | ZEAL 3878 | ZEBU 3879 | ZEDS 3880 | ZEES 3881 | ZEIN 3882 | ZEKS 3883 | ZERK 3884 | ZERO 3885 | ZEST 3886 | ZETA 3887 | ZIGS 3888 | ZILL 3889 | ZINC 3890 | ZING 3891 | ZINS 3892 | ZIPS 3893 | ZITI 3894 | ZITS 3895 | ZOEA 3896 | ZOIC 3897 | ZONE 3898 | ZONK 3899 | ZOOM 3900 | ZOON 3901 | ZOOS 3902 | ZORI 3903 | ZYME 3904 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter7/graphimpl.py: -------------------------------------------------------------------------------- 1 | class Vertex: 2 | def __init__(self,key): 3 | self.id = key 4 | self.connectedTo = {} 5 | 6 | def addNeighbor(self,nbr,weight=0): 7 | self.connectedTo[nbr] = weight 8 | 9 | def __str__(self): 10 | return str(self.id) + ' connectedTo: ' + str([x.id for x in self.connectedTo]) 11 | 12 | def getConnections(self): 13 | return self.connectedTo.keys() 14 | 15 | def getId(self): 16 | return self.id 17 | 18 | def getWeight(self,nbr): 19 | return self.connectedTo[nbr] 20 | 21 | 22 | class Graph: 23 | def __init__(self): 24 | self.vertList = {} 25 | self.numVertices = 0 26 | 27 | def addVertex(self,key): 28 | self.numVertices = self.numVertices + 1 29 | newVertex = Vertex(key) 30 | self.vertList[key] = newVertex 31 | return newVertex 32 | 33 | def getVertex(self,n): 34 | if n in self.vertList: 35 | return self.vertList[n] 36 | else: 37 | return None 38 | 39 | def __contains__(self,n): 40 | return n in self.vertList 41 | 42 | def addEdge(self,f,t,cost=0): 43 | if f not in self.vertList: 44 | nv = self.addVertex(f) 45 | if t not in self.vertList: 46 | nv = self.addVertex(t) 47 | self.vertList[f].addNeighbor(self.vertList[t], cost) 48 | 49 | def getVertices(self): 50 | return self.vertList.keys() 51 | 52 | def __iter__(self): 53 | return iter(self.vertList.values()) 54 | 55 | 56 | 57 | g = Graph() 58 | for i in range(6): 59 | g.addVertex(i) 60 | 61 | print(g.vertList) 62 | 63 | g.addEdge(0,1,5) 64 | g.addEdge(0,5,2) 65 | g.addEdge(1,2,4) 66 | g.addEdge(2,3,9) 67 | g.addEdge(3,4,7) 68 | g.addEdge(3,5,3) 69 | g.addEdge(4,0,1) 70 | g.addEdge(5,4,8) 71 | g.addEdge(5,2,1) 72 | for v in g: 73 | for w in v.getConnections(): 74 | print("( %s , %s )" % (v.getId(), w.getId())) 75 | -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter7/wordladder.py: -------------------------------------------------------------------------------- 1 | from pythonds.graphs import Graph, Vertex 2 | from pythonds.basic import Queue 3 | 4 | def buildGraph(wordFile): 5 | d = {} 6 | g = Graph() 7 | wfile = open(wordFile,'r') 8 | # create buckets of words that differ by one letter 9 | for line in wfile: 10 | word = line[:-1] 11 | for i in range(len(word)): 12 | bucket = word[:i] + '_' + word[i+1:] 13 | if bucket in d: 14 | d[bucket].append(word) 15 | else: 16 | d[bucket] = [word] 17 | # add vertices and edges for words in the same bucket 18 | for bucket in d.keys(): 19 | for word1 in d[bucket]: 20 | for word2 in d[bucket]: 21 | if word1 != word2: 22 | g.addEdge(word1,word2) 23 | return g 24 | 25 | 26 | def bfs(g,start): 27 | start.setDistance(0) 28 | start.setPred(None) 29 | vertQueue = Queue() 30 | vertQueue.enqueue(start) 31 | while (vertQueue.size() > 0): 32 | currentVert = vertQueue.dequeue() 33 | for nbr in currentVert.getConnections(): 34 | if (nbr.getColor() == 'white'): 35 | nbr.setColor('gray') 36 | nbr.setDistance(currentVert.getDistance() + 1) 37 | nbr.setPred(currentVert) 38 | vertQueue.enqueue(nbr) 39 | currentVert.setColor('black') 40 | 41 | 42 | def traverse(y): 43 | x = y 44 | while (x.getPred()): 45 | print(x.getId()) 46 | x = x.getPred() 47 | print(x.getId()) 48 | 49 | 50 | wordgraph = buildGraph("fourletterwords.txt") 51 | 52 | bfs(wordgraph, wordgraph.getVertex('FOOL')) 53 | 54 | traverse(wordgraph.getVertex('SAGE')) 55 | 56 | #traverse(wordgraph.getVertex('COOL')) -------------------------------------------------------------------------------- /PythonDSExamplePrograms/Chapter7/wordproc.py: -------------------------------------------------------------------------------- 1 | f = open("rawwords.txt","r") 2 | wl = [] 3 | for aline in f: 4 | l = aline.split() 5 | wl.append(l[0]) 6 | 7 | 8 | of = open("fourletterwords.txt","w") 9 | 10 | for w in wl: 11 | of.write(w+'\n') 12 | -------------------------------------------------------------------------------- /Python数据结构与算法分析(第2版).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/Python数据结构与算法分析(第2版).pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python数据结构与算法分析 2 | 本内容是《Python数据结构与算法分析(第2版)》教材的学习代码,包括教材上每一章的编程练习题解答,以及教材实例程序的源代码。 3 | 4 | `pythonds`文件中包含了Python各种基本数据结构的代码实现,用于在操作数据结构时直接导入。 5 | 6 | 导入方式示例: 7 | 8 | from pythonds.basic.stack import Stack #这里导入的是堆栈Stack 9 | -------------------------------------------------------------------------------- /pythonds/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/__init__.py -------------------------------------------------------------------------------- /pythonds/__pycache__/__init__.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/__pycache__/__init__.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/basic/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | #__all__ = ["stack"] 3 | 4 | 5 | from .stack import Stack 6 | from .queue import Queue 7 | 8 | 9 | -------------------------------------------------------------------------------- /pythonds/basic/__pycache__/__init__.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/basic/__pycache__/__init__.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/basic/__pycache__/queue.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/basic/__pycache__/queue.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/basic/__pycache__/stack.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/basic/__pycache__/stack.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/basic/deque.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | #deque.py 6 | 7 | 8 | class Deque: 9 | def __init__(self): 10 | self.items = [] 11 | 12 | def isEmpty(self): 13 | return self.items == [] 14 | 15 | def addFront(self, item): 16 | self.items.append(item) 17 | 18 | def addRear(self, item): 19 | self.items.insert(0,item) 20 | 21 | def removeFront(self): 22 | return self.items.pop() 23 | 24 | def removeRear(self): 25 | return self.items.pop(0) 26 | 27 | def size(self): 28 | return len(self.items) 29 | -------------------------------------------------------------------------------- /pythonds/basic/queue.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | #queue.py 6 | 7 | class Queue: 8 | def __init__(self): 9 | self.items = [] 10 | 11 | def isEmpty(self): 12 | return self.items == [] 13 | 14 | def enqueue(self, item): 15 | self.items.insert(0,item) 16 | 17 | def dequeue(self): 18 | return self.items.pop() 19 | 20 | def size(self): 21 | return len(self.items) 22 | -------------------------------------------------------------------------------- /pythonds/basic/stack.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | #stack.py 6 | 7 | class Stack: 8 | def __init__(self): 9 | self.items = [] 10 | 11 | def isEmpty(self): 12 | return self.items == [] 13 | 14 | def push(self, item): 15 | self.items.append(item) 16 | 17 | def pop(self): 18 | return self.items.pop() 19 | 20 | def peek(self): 21 | return self.items[len(self.items)-1] 22 | 23 | def size(self): 24 | return len(self.items) 25 | 26 | -------------------------------------------------------------------------------- /pythonds/graphs/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | from .adjGraph import Graph 4 | from .adjGraph import Vertex 5 | from .priorityQueue import PriorityQueue 6 | -------------------------------------------------------------------------------- /pythonds/graphs/__pycache__/__init__.cpython-32.pyc: -------------------------------------------------------------------------------- 1 | l 2 | &CMc@s4ddlmZddlmZddlmZdS(i(uGraph(uVertex(u PriorityQueueN(uadjGraphuGraphuVertexu priorityQueueu PriorityQueue(((upythonds/graphs/__init__.pyus -------------------------------------------------------------------------------- /pythonds/graphs/__pycache__/adjGraph.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/graphs/__pycache__/adjGraph.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/graphs/__pycache__/priorityQueue.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/graphs/__pycache__/priorityQueue.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/graphs/adjGraph.py: -------------------------------------------------------------------------------- 1 | # 2 | # adjGraph 3 | # 4 | # Created by Brad Miller on 2005-02-24. 5 | # Copyright (c) 2005 Brad Miller, David Ranum, Luther College. All rights reserved. 6 | # 7 | 8 | import sys 9 | import os 10 | import unittest 11 | 12 | class Graph: 13 | def __init__(self): 14 | self.vertices = {} 15 | self.numVertices = 0 16 | 17 | def addVertex(self,key): 18 | self.numVertices = self.numVertices + 1 19 | newVertex = Vertex(key) 20 | self.vertices[key] = newVertex 21 | return newVertex 22 | 23 | def getVertex(self,n): 24 | if n in self.vertices: 25 | return self.vertices[n] 26 | else: 27 | return None 28 | 29 | def __contains__(self,n): 30 | return n in self.vertices 31 | 32 | def addEdge(self,f,t,cost=0): 33 | if f not in self.vertices: 34 | nv = self.addVertex(f) 35 | if t not in self.vertices: 36 | nv = self.addVertex(t) 37 | self.vertices[f].addNeighbor(self.vertices[t],cost) 38 | 39 | def getVertices(self): 40 | return list(self.vertices.keys()) 41 | 42 | def __iter__(self): 43 | return iter(self.vertices.values()) 44 | 45 | class Vertex: 46 | def __init__(self,num): 47 | self.id = num 48 | self.connectedTo = {} 49 | self.color = 'white' 50 | self.dist = sys.maxsize 51 | self.pred = None 52 | self.disc = 0 53 | self.fin = 0 54 | 55 | # def __lt__(self,o): 56 | # return self.id < o.id 57 | 58 | def addNeighbor(self,nbr,weight=0): 59 | self.connectedTo[nbr] = weight 60 | 61 | def setColor(self,color): 62 | self.color = color 63 | 64 | def setDistance(self,d): 65 | self.dist = d 66 | 67 | def setPred(self,p): 68 | self.pred = p 69 | 70 | def setDiscovery(self,dtime): 71 | self.disc = dtime 72 | 73 | def setFinish(self,ftime): 74 | self.fin = ftime 75 | 76 | def getFinish(self): 77 | return self.fin 78 | 79 | def getDiscovery(self): 80 | return self.disc 81 | 82 | def getPred(self): 83 | return self.pred 84 | 85 | def getDistance(self): 86 | return self.dist 87 | 88 | def getColor(self): 89 | return self.color 90 | 91 | def getConnections(self): 92 | return self.connectedTo.keys() 93 | 94 | def getWeight(self,nbr): 95 | return self.connectedTo[nbr] 96 | 97 | def __str__(self): 98 | return str(self.id) + ":color " + self.color + ":disc " + str(self.disc) + ":fin " + str(self.fin) + ":dist " + str(self.dist) + ":pred \n\t[" + str(self.pred)+ "]\n" 99 | 100 | def getId(self): 101 | return self.id 102 | 103 | class adjGraphTests(unittest.TestCase): 104 | def setUp(self): 105 | self.tGraph = Graph() 106 | 107 | def testMakeGraph(self): 108 | gFile = open("test.dat") 109 | for line in gFile: 110 | fVertex, tVertex = line.split('|') 111 | fVertex = int(fVertex) 112 | tVertex = int(tVertex) 113 | self.tGraph.addEdge(fVertex,tVertex) 114 | for i in self.tGraph: 115 | adj = i.getAdj() 116 | for k in adj: 117 | print(i, k) 118 | 119 | 120 | if __name__ == '__main__': 121 | unittest.main() 122 | 123 | -------------------------------------------------------------------------------- /pythonds/graphs/priorityQueue.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | import unittest 6 | 7 | # this implementation of binary heap takes key value pairs, 8 | # we will assume that the keys are all comparable 9 | 10 | class PriorityQueue: 11 | def __init__(self): 12 | self.heapArray = [(0,0)] 13 | self.currentSize = 0 14 | 15 | def buildHeap(self,alist): 16 | self.currentSize = len(alist) 17 | self.heapArray = [(0,0)] 18 | for i in alist: 19 | self.heapArray.append(i) 20 | i = len(alist) // 2 21 | while (i > 0): 22 | self.percDown(i) 23 | i = i - 1 24 | 25 | def percDown(self,i): 26 | while (i * 2) <= self.currentSize: 27 | mc = self.minChild(i) 28 | if self.heapArray[i][0] > self.heapArray[mc][0]: 29 | tmp = self.heapArray[i] 30 | self.heapArray[i] = self.heapArray[mc] 31 | self.heapArray[mc] = tmp 32 | i = mc 33 | 34 | def minChild(self,i): 35 | if i*2 > self.currentSize: 36 | return -1 37 | else: 38 | if i*2 + 1 > self.currentSize: 39 | return i*2 40 | else: 41 | if self.heapArray[i*2][0] < self.heapArray[i*2+1][0]: 42 | return i*2 43 | else: 44 | return i*2+1 45 | 46 | def percUp(self,i): 47 | while i // 2 > 0: 48 | if self.heapArray[i][0] < self.heapArray[i//2][0]: 49 | tmp = self.heapArray[i//2] 50 | self.heapArray[i//2] = self.heapArray[i] 51 | self.heapArray[i] = tmp 52 | i = i//2 53 | 54 | def add(self,k): 55 | self.heapArray.append(k) 56 | self.currentSize = self.currentSize + 1 57 | self.percUp(self.currentSize) 58 | 59 | def delMin(self): 60 | retval = self.heapArray[1][1] 61 | self.heapArray[1] = self.heapArray[self.currentSize] 62 | self.currentSize = self.currentSize - 1 63 | self.heapArray.pop() 64 | self.percDown(1) 65 | return retval 66 | 67 | def isEmpty(self): 68 | if self.currentSize == 0: 69 | return True 70 | else: 71 | return False 72 | 73 | def decreaseKey(self,val,amt): 74 | # this is a little wierd, but we need to find the heap thing to decrease by 75 | # looking at its value 76 | done = False 77 | i = 1 78 | myKey = 0 79 | while not done and i <= self.currentSize: 80 | if self.heapArray[i][1] == val: 81 | done = True 82 | myKey = i 83 | else: 84 | i = i + 1 85 | if myKey > 0: 86 | self.heapArray[myKey] = (amt,self.heapArray[myKey][1]) 87 | self.percUp(myKey) 88 | 89 | def __contains__(self,vtx): 90 | for pair in self.heapArray: 91 | if pair[1] == vtx: 92 | return True 93 | return False 94 | 95 | class TestBinHeap(unittest.TestCase): 96 | def setUp(self): 97 | self.theHeap = PriorityQueue() 98 | self.theHeap.add((2,'x')) 99 | self.theHeap.add((3,'y')) 100 | self.theHeap.add((5,'z')) 101 | self.theHeap.add((6,'a')) 102 | self.theHeap.add((4,'d')) 103 | 104 | 105 | def testInsert(self): 106 | assert self.theHeap.currentSize == 5 107 | 108 | def testDelmin(self): 109 | assert self.theHeap.delMin() == 'x' 110 | assert self.theHeap.delMin() == 'y' 111 | 112 | def testDecKey(self): 113 | self.theHeap.decreaseKey('d',1) 114 | assert self.theHeap.delMin() == 'd' 115 | 116 | if __name__ == '__main__': 117 | unittest.main() 118 | -------------------------------------------------------------------------------- /pythonds/trees/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | from .balance import AVLTree 5 | from .bst import BinarySearchTree 6 | from .binheap import BinHeap 7 | 8 | 9 | -------------------------------------------------------------------------------- /pythonds/trees/__pycache__/__init__.cpython-32.pyc: -------------------------------------------------------------------------------- 1 | l 2 | |%CMc@s4ddlmZddlmZddlmZdS(i(uAVLTree(uBinarySearchTree(uBinHeapN(ubalanceuAVLTreeubstuBinarySearchTreeubinheapuBinHeap(((upythonds/trees/__init__.pyus -------------------------------------------------------------------------------- /pythonds/trees/__pycache__/balance.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/trees/__pycache__/balance.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/trees/__pycache__/binheap.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/trees/__pycache__/binheap.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/trees/__pycache__/bst.cpython-32.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/trees/__pycache__/bst.cpython-32.pyc -------------------------------------------------------------------------------- /pythonds/trees/balance.py: -------------------------------------------------------------------------------- 1 | #!/bin/env python3.1 2 | # Bradley N. Miller, David L. Ranum 3 | # Introduction to Data Structures and Algorithms in Python 4 | # Copyright 2005, 2010 5 | # 6 | 7 | import unittest 8 | from .bst import BinarySearchTree, TreeNode 9 | 10 | class AVLTree(BinarySearchTree): 11 | ''' 12 | Author: Brad Miller 13 | Date: 1/15/2005 14 | Description: Imlement a binary search tree with the following interface 15 | functions: 16 | __contains__(y) <==> y in x 17 | __getitem__(y) <==> x[y] 18 | __init__() 19 | __len__() <==> len(x) 20 | __setitem__(k,v) <==> x[k] = v 21 | clear() 22 | get(k) 23 | has_key(k) 24 | items() 25 | keys() 26 | values() 27 | put(k,v) 28 | ''' 29 | 30 | 31 | def _put(self,key,val,currentNode): 32 | if key < currentNode.key: 33 | if currentNode.hasLeftChild(): 34 | self._put(key,val,currentNode.leftChild) 35 | else: 36 | currentNode.leftChild = TreeNode(key,val,parent=currentNode) 37 | self.updateBalance(currentNode.leftChild) 38 | else: 39 | if currentNode.hasRightChild(): 40 | self._put(key,val,currentNode.rightChild) 41 | else: 42 | currentNode.rightChild = TreeNode(key,val,parent=currentNode) 43 | self.updateBalance(currentNode.rightChild) 44 | 45 | def updateBalance(self,node): 46 | if node.balanceFactor > 1 or node.balanceFactor < -1: 47 | self.rebalance(node) 48 | return 49 | if node.parent != None: 50 | if node.isLeftChild(): 51 | node.parent.balanceFactor += 1 52 | elif node.isRightChild(): 53 | node.parent.balanceFactor -= 1 54 | 55 | if node.parent.balanceFactor != 0: 56 | self.updateBalance(node.parent) 57 | 58 | def rebalance(self,node): 59 | if node.balanceFactor < 0: 60 | if node.rightChild.balanceFactor > 0: 61 | # Do an LR Rotation 62 | self.rotateRight(node.rightChild) 63 | self.rotateLeft(node) 64 | else: 65 | # single left 66 | self.rotateLeft(node) 67 | elif node.balanceFactor > 0: 68 | if node.leftChild.balanceFactor < 0: 69 | # Do an RL Rotation 70 | self.rotateLeft(node.leftChild) 71 | self.rotateRight(node) 72 | else: 73 | # single right 74 | self.rotateRight(node) 75 | 76 | def rotateLeft(self,rotRoot): 77 | newRoot = rotRoot.rightChild 78 | rotRoot.rightChild = newRoot.leftChild 79 | if newRoot.leftChild != None: 80 | newRoot.leftChild.parent = rotRoot 81 | newRoot.parent = rotRoot.parent 82 | if rotRoot.isRoot(): 83 | self.root = newRoot 84 | else: 85 | if rotRoot.isLeftChild(): 86 | rotRoot.parent.leftChild = newRoot 87 | else: 88 | rotRoot.parent.rightChild = newRoot 89 | newRoot.leftChild = rotRoot 90 | rotRoot.parent = newRoot 91 | rotRoot.balanceFactor = rotRoot.balanceFactor + 1 - min(newRoot.balanceFactor, 0) 92 | newRoot.balanceFactor = newRoot.balanceFactor + 1 + max(rotRoot.balanceFactor, 0) 93 | 94 | 95 | def rotateRight(self,rotRoot): 96 | newRoot = rotRoot.leftChild 97 | rotRoot.leftChild = newRoot.rightChild 98 | if newRoot.rightChild != None: 99 | newRoot.rightChild.parent = rotRoot 100 | newRoot.parent = rotRoot.parent 101 | if rotRoot.isRoot(): 102 | self.root = newRoot 103 | else: 104 | if rotRoot.isRightChild(): 105 | rotRoot.parent.rightChild = newRoot 106 | else: 107 | rotRoot.parent.leftChild = newRoot 108 | newRoot.rightChild = rotRoot 109 | rotRoot.parent = newRoot 110 | rotRoot.balanceFactor = rotRoot.balanceFactor - 1 - max(newRoot.balanceFactor, 0) 111 | newRoot.balanceFactor = newRoot.balanceFactor - 1 + min(rotRoot.balanceFactor, 0) 112 | 113 | 114 | class BinaryTreeTests(unittest.TestCase): 115 | def setUp(self): 116 | self.bst = AVLTree() 117 | 118 | def testAuto1(self): 119 | self.bst.put(30,'a') 120 | self.bst.put(50,'b') 121 | self.bst.put(40,'c') 122 | assert self.bst.root.key == 40 123 | 124 | def testAuto2(self): 125 | self.bst.put(50,'a') 126 | self.bst.put(30,'b') 127 | self.bst.put(40,'c') 128 | assert self.bst.root.key == 40 129 | 130 | def testAuto3(self): 131 | self.bst.put(50,'a') 132 | self.bst.put(30,'b') 133 | self.bst.put(70,'c') 134 | self.bst.put(80,'c') 135 | self.bst.put(60,'d') 136 | self.bst.put(90,'e') 137 | assert self.bst.root.key == 70 138 | 139 | def testAuto3(self): 140 | self.bst.put(40,'a') 141 | self.bst.put(30,'b') 142 | self.bst.put(50,'c') 143 | self.bst.put(45,'d') 144 | self.bst.put(60,'e') 145 | self.bst.put(43,'f') 146 | assert self.bst.root.key == 45 147 | assert self.bst.root.leftChild.key == 40 148 | assert self.bst.root.rightChild.key == 50 149 | assert self.bst.root.balanceFactor == 0 150 | assert self.bst.root.leftChild.balanceFactor == 0 151 | assert self.bst.root.rightChild.balanceFactor == -1 152 | 153 | def testAuto4(self): 154 | self.bst.put(40,'a') 155 | self.bst.put(30,'b') 156 | self.bst.put(50,'c') 157 | self.bst.put(10,'d') 158 | self.bst.put(35,'e') 159 | self.bst.put(37,'f') 160 | assert self.bst.root.key == 35 161 | assert self.bst.root.leftChild.key == 30 162 | assert self.bst.root.rightChild.key == 40 163 | assert self.bst.root.balanceFactor == 0 164 | assert self.bst.root.leftChild.balanceFactor == 1 165 | assert self.bst.root.rightChild.balanceFactor == 0 166 | 167 | 168 | if __name__ == '__main__': 169 | import platform 170 | print(platform.python_version()) 171 | unittest.main() 172 | 173 | # Local Variables: 174 | # py-which-shell: "python3" 175 | # End: 176 | -------------------------------------------------------------------------------- /pythonds/trees/binaryTree.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | 6 | class BinaryTree: 7 | """ 8 | A recursive implementation of Binary Tree 9 | Using links and Nodes approach. 10 | """ 11 | def __init__(self,rootObj): 12 | self.key = rootObj 13 | self.leftChild = None 14 | self.rightChild = None 15 | 16 | def insertLeft(self,newNode): 17 | if self.leftChild == None: 18 | self.leftChild = BinaryTree(newNode) 19 | else: 20 | t = BinaryTree(newNode) 21 | t.left = self.leftChild 22 | self.leftChild = t 23 | 24 | def insertRight(self,newNode): 25 | if self.rightChild == None: 26 | self.rightChild = BinaryTree(newNode) 27 | else: 28 | t = BinaryTree(newNode) 29 | t.right = self.rightChild 30 | self.rightChild = t 31 | 32 | def isLeaf(self): 33 | return ((not self.leftChild) and (not self.rightChild)) 34 | 35 | def getRightChild(self): 36 | return self.rightChild 37 | 38 | def getLeftChild(self): 39 | return self.leftChild 40 | 41 | def setRootVal(self,obj): 42 | self.key = obj 43 | 44 | def getRootVal(self,): 45 | return self.key 46 | 47 | def inorder(self): 48 | if self.leftChild: 49 | self.leftChild.inorder() 50 | print(self.key) 51 | if self.rightChild: 52 | self.rightChild.inorder() 53 | 54 | def postorder(self): 55 | if self.leftChild: 56 | self.leftChild.postorder() 57 | if self.rightChild: 58 | self.rightChild.postorder() 59 | print(self.key) 60 | 61 | 62 | def preorder(self): 63 | print(self.key) 64 | if self.leftChild: 65 | self.leftChild.preorder() 66 | if self.rightChild: 67 | self.rightChild.preorder() 68 | 69 | def printexp(self): 70 | if self.leftChild: 71 | print('(', end=' ') 72 | self.leftChild.printexp() 73 | print(self.key, end=' ') 74 | if self.rightChild: 75 | self.rightChild.printexp() 76 | print(')', end=' ') 77 | 78 | def postordereval(self): 79 | opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv} 80 | res1 = None 81 | res2 = None 82 | if self.leftChild: 83 | res1 = self.leftChild.postordereval() #// \label{peleft} 84 | if self.rightChild: 85 | res2 = self.rightChild.postordereval() #// \label{peright} 86 | if res1 and res2: 87 | return opers[self.key](res1,res2) #// \label{peeval} 88 | else: 89 | return self.key 90 | 91 | def inorder(tree): 92 | if tree != None: 93 | inorder(tree.getLeftChild()) 94 | print(tree.getRootVal()) 95 | inorder(tree.getRightChild()) 96 | 97 | def printexp(tree): 98 | if tree.leftChild: 99 | print('(', end=' ') 100 | printexp(tree.getLeftChild()) 101 | print(tree.getRootVal(), end=' ') 102 | if tree.rightChild: 103 | printexp(tree.getRightChild()) 104 | print(')', end=' ') 105 | 106 | def printexp(tree): 107 | sVal = "" 108 | if tree: 109 | sVal = '(' + printexp(tree.getLeftChild()) 110 | sVal = sVal + str(tree.getRootVal()) 111 | sVal = sVal + printexp(tree.getRightChild()) + ')' 112 | return sVal 113 | 114 | def postordereval(tree): 115 | opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv} 116 | res1 = None 117 | res2 = None 118 | if tree: 119 | res1 = postordereval(tree.getLeftChild()) #// \label{peleft} 120 | res2 = postordereval(tree.getRightChild()) #// \label{peright} 121 | if res1 and res2: 122 | return opers[tree.getRootVal()](res1,res2) #// \label{peeval} 123 | else: 124 | return tree.getRootVal() 125 | 126 | def height(tree): 127 | if tree == None: 128 | return -1 129 | else: 130 | return 1 + max(height(tree.leftChild),height(tree.rightChild)) 131 | 132 | t = BinaryTree(7) 133 | t.insertLeft(3) 134 | t.insertRight(9) 135 | inorder(t) 136 | import operator 137 | x = BinaryTree('*') 138 | x.insertLeft('+') 139 | l = x.getLeftChild() 140 | l.insertLeft(4) 141 | l.insertRight(5) 142 | x.insertRight(7) 143 | print(printexp(x)) 144 | print(postordereval(x)) 145 | print(height(x)) 146 | -------------------------------------------------------------------------------- /pythonds/trees/binheap.py: -------------------------------------------------------------------------------- 1 | # Bradley N. Miller, David L. Ranum 2 | # Introduction to Data Structures and Algorithms in Python 3 | # Copyright 2005 4 | # 5 | import unittest 6 | 7 | # this heap takes key value pairs, we will assume that the keys are integers 8 | class BinHeap: 9 | def __init__(self): 10 | self.heapList = [0] 11 | self.currentSize = 0 12 | 13 | 14 | def buildHeap(self,alist): 15 | i = len(alist) // 2 16 | self.currentSize = len(alist) 17 | self.heapList = [0] + alist[:] 18 | print(len(self.heapList), i) 19 | while (i > 0): 20 | print(self.heapList, i) 21 | self.percDown(i) 22 | i = i - 1 23 | print(self.heapList,i) 24 | 25 | def percDown(self,i): 26 | while (i * 2) <= self.currentSize: 27 | mc = self.minChild(i) 28 | if self.heapList[i] > self.heapList[mc]: 29 | tmp = self.heapList[i] 30 | self.heapList[i] = self.heapList[mc] 31 | self.heapList[mc] = tmp 32 | i = mc 33 | 34 | def minChild(self,i): 35 | if i * 2 + 1 > self.currentSize: 36 | return i * 2 37 | else: 38 | if self.heapList[i * 2] < self.heapList[i * 2 + 1]: 39 | return i * 2 40 | else: 41 | return i * 2 + 1 42 | 43 | def percUp(self,i): 44 | while i // 2 > 0: 45 | if self.heapList[i] < self.heapList[i//2]: 46 | tmp = self.heapList[i // 2] 47 | self.heapList[i // 2] = self.heapList[i] 48 | self.heapList[i] = tmp 49 | i = i // 2 50 | 51 | def insert(self,k): 52 | self.heapList.append(k) 53 | self.currentSize = self.currentSize + 1 54 | self.percUp(self.currentSize) 55 | 56 | def delMin(self): 57 | retval = self.heapList[1] 58 | self.heapList[1] = self.heapList[self.currentSize] 59 | self.currentSize = self.currentSize - 1 60 | self.heapList.pop() 61 | self.percDown(1) 62 | return retval 63 | 64 | def isEmpty(self): 65 | if currentSize == 0: 66 | return True 67 | else: 68 | return False 69 | 70 | class FooThing: 71 | def __init__(self,x,y): 72 | self.key = x 73 | self.val = y 74 | 75 | 76 | def __lt__(self,other): 77 | if self.key < other.key: 78 | return True 79 | else: 80 | return False 81 | 82 | def __gt__(self,other): 83 | if self.key > other.key: 84 | return True 85 | else: 86 | return False 87 | 88 | def __hash__(self): 89 | return self.key 90 | 91 | class TestBinHeap(unittest.TestCase): 92 | def setUp(self): 93 | self.theHeap = BinHeap() 94 | self.theHeap.insert(FooThing(5,'a')) 95 | self.theHeap.insert(FooThing(9,'d')) 96 | self.theHeap.insert(FooThing(1,'x')) 97 | self.theHeap.insert(FooThing(2,'y')) 98 | self.theHeap.insert(FooThing(3,'z')) 99 | 100 | def testInsert(self): 101 | assert self.theHeap.currentSize == 5 102 | 103 | def testDelmin(self): 104 | assert self.theHeap.delMin().val == 'x' 105 | assert self.theHeap.delMin().val == 'y' 106 | assert self.theHeap.delMin().val == 'z' 107 | assert self.theHeap.delMin().val == 'a' 108 | 109 | def testMixed(self): 110 | myHeap = BinHeap() 111 | myHeap.insert(9) 112 | myHeap.insert(1) 113 | myHeap.insert(5) 114 | assert myHeap.delMin() == 1 115 | myHeap.insert(2) 116 | myHeap.insert(7) 117 | assert myHeap.delMin() == 2 118 | assert myHeap.delMin() == 5 119 | 120 | def testDupes(self): 121 | myHeap = BinHeap() 122 | myHeap.insert(9) 123 | myHeap.insert(1) 124 | myHeap.insert(8) 125 | myHeap.insert(1) 126 | assert myHeap.currentSize == 4 127 | assert myHeap.delMin() == 1 128 | assert myHeap.delMin() == 1 129 | assert myHeap.delMin() == 8 130 | 131 | def testBuildHeap(self): 132 | myHeap = BinHeap() 133 | myHeap.buildHeap([9,5,6,2,3]) 134 | f = myHeap.delMin() 135 | print("f = ", f) 136 | assert f == 2 137 | assert myHeap.delMin() == 3 138 | assert myHeap.delMin() == 5 139 | assert myHeap.delMin() == 6 140 | assert myHeap.delMin() == 9 141 | 142 | if __name__ == '__main__': 143 | d = {} 144 | d[FooThing(1,'z')] = 10 145 | unittest.main() 146 | -------------------------------------------------------------------------------- /pythonds/trees/bst.py: -------------------------------------------------------------------------------- 1 | #!/bin/env python3.1 2 | # Bradley N. Miller, David L. Ranum 3 | # Introduction to Data Structures and Algorithms in Python 4 | # Copyright 2005, 2010 5 | # 6 | 7 | import unittest 8 | class BinarySearchTree: 9 | ''' 10 | Author: Brad Miller 11 | Date: 1/15/2005 12 | Description: Imlement a binary search tree with the following interface 13 | functions: 14 | __contains__(y) <==> y in x 15 | __getitem__(y) <==> x[y] 16 | __init__() 17 | __len__() <==> len(x) 18 | __setitem__(k,v) <==> x[k] = v 19 | clear() 20 | get(k) 21 | items() 22 | keys() 23 | values() 24 | put(k,v) 25 | in 26 | del <==> 27 | ''' 28 | 29 | def __init__(self): 30 | self.root = None 31 | self.size = 0 32 | 33 | def put(self,key,val): 34 | if self.root: 35 | self._put(key,val,self.root) 36 | else: 37 | self.root = TreeNode(key,val) 38 | self.size = self.size + 1 39 | 40 | def _put(self,key,val,currentNode): 41 | if key < currentNode.key: 42 | if currentNode.hasLeftChild(): 43 | self._put(key,val,currentNode.leftChild) 44 | else: 45 | currentNode.leftChild = TreeNode(key,val,parent=currentNode) 46 | else: 47 | if currentNode.hasRightChild(): 48 | self._put(key,val,currentNode.rightChild) 49 | else: 50 | currentNode.rightChild = TreeNode(key,val,parent=currentNode) 51 | 52 | def __setitem__(self,k,v): 53 | self.put(k,v) 54 | 55 | def get(self,key): 56 | if self.root: 57 | res = self._get(key,self.root) 58 | if res: 59 | return res.payload 60 | else: 61 | return None 62 | else: 63 | return None 64 | 65 | def _get(self,key,currentNode): 66 | if not currentNode: 67 | return None 68 | elif currentNode.key == key: 69 | return currentNode 70 | elif key < currentNode.key: 71 | return self._get(key,currentNode.leftChild) 72 | else: 73 | return self._get(key,currentNode.rightChild) 74 | 75 | 76 | def __getitem__(self,key): 77 | res = self.get(key) 78 | if res: 79 | return res 80 | else: 81 | raise KeyError('Error, key not in tree') 82 | 83 | 84 | def __contains__(self,key): 85 | if self._get(key,self.root): 86 | return True 87 | else: 88 | return False 89 | 90 | def length(self): 91 | return self.size 92 | 93 | def __len__(self): 94 | return self.size 95 | 96 | def __iter__(self): 97 | return self.root.__iter__() 98 | 99 | def delete(self,key): 100 | if self.size > 1: 101 | nodeToRemove = self._get(key,self.root) 102 | if nodeToRemove: 103 | self.remove(nodeToRemove) 104 | self.size = self.size-1 105 | else: 106 | raise KeyError('Error, key not in tree') 107 | elif self.size == 1 and self.root.key == key: 108 | self.root = None 109 | self.size = self.size - 1 110 | else: 111 | raise KeyError('Error, key not in tree') 112 | 113 | def __delitem__(self,key): 114 | self.delete(key) 115 | 116 | def remove(self,currentNode): 117 | if currentNode.isLeaf(): #leaf 118 | if currentNode == currentNode.parent.leftChild: 119 | currentNode.parent.leftChild = None 120 | else: 121 | currentNode.parent.rightChild = None 122 | elif currentNode.hasBothChildren(): #interior 123 | succ = currentNode.findSuccessor() 124 | succ.spliceOut() 125 | currentNode.key = succ.key 126 | currentNode.payload = succ.payload 127 | else: # this node has one child 128 | if currentNode.hasLeftChild(): 129 | if currentNode.isLeftChild(): 130 | currentNode.leftChild.parent = currentNode.parent 131 | currentNode.parent.leftChild = currentNode.leftChild 132 | elif currentNode.isRightChild(): 133 | currentNode.leftChild.parent = currentNode.parent 134 | currentNode.parent.rightChild = currentNode.leftChild 135 | else: 136 | currentNode.replaceNodeData(currentNode.leftChild.key, 137 | currentNode.leftChild.payload, 138 | currentNode.leftChild.leftChild, 139 | currentNode.leftChild.rightChild) 140 | else: 141 | if currentNode.isLeftChild(): 142 | currentNode.rightChild.parent = currentNode.parent 143 | currentNode.parent.leftChild = currentNode.rightChild 144 | elif currentNode.isRightChild(): 145 | currentNode.rightChild.parent = currentNode.parent 146 | currentNode.parent.rightChild = currentNode.rightChild 147 | else: 148 | currentNode.replaceNodeData(currentNode.rightChild.key, 149 | currentNode.rightChild.payload, 150 | currentNode.rightChild.leftChild, 151 | currentNode.rightChild.rightChild) 152 | 153 | def inorder(self): 154 | self._inorder(self.root) 155 | 156 | def _inorder(self,tree): 157 | if tree != None: 158 | self._inorder(tree.leftChild) 159 | print(tree.key) 160 | self._inorder(tree.rightChild) 161 | 162 | def postorder(self): 163 | self._postorder(self.root) 164 | 165 | def _postorder(self, tree): 166 | if tree: 167 | self._postorder(tree.rightChild) 168 | self._postorder(tree.leftChild) 169 | print(tree.key) 170 | 171 | def preorder(self): 172 | self._preorder(self,self.root) 173 | 174 | def _preorder(self,tree): 175 | if tree: 176 | print(tree.key) 177 | self._preorder(tree.leftChild) 178 | self._preorder(tree.rightChild) 179 | 180 | 181 | class TreeNode: 182 | def __init__(self,key,val,left=None,right=None,parent=None): 183 | self.key = key 184 | self.payload = val 185 | self.leftChild = left 186 | self.rightChild = right 187 | self.parent = parent 188 | self.balanceFactor = 0 189 | 190 | def hasLeftChild(self): 191 | return self.leftChild 192 | 193 | def hasRightChild(self): 194 | return self.rightChild 195 | 196 | def isLeftChild(self): 197 | return self.parent and self.parent.leftChild == self 198 | 199 | def isRightChild(self): 200 | return self.parent and self.parent.rightChild == self 201 | 202 | def isRoot(self): 203 | return not self.parent 204 | 205 | def isLeaf(self): 206 | return not (self.rightChild or self.leftChild) 207 | 208 | def hasAnyChildren(self): 209 | return self.rightChild or self.leftChild 210 | 211 | def hasBothChildren(self): 212 | return self.rightChild and self.leftChild 213 | 214 | def replaceNodeData(self,key,value,lc,rc): 215 | self.key = key 216 | self.payload = value 217 | self.leftChild = lc 218 | self.rightChild = rc 219 | if self.hasLeftChild(): 220 | self.leftChild.parent = self 221 | if self.hasRightChild(): 222 | self.rightChild.parent = self 223 | 224 | def findSuccessor(self): 225 | succ = None 226 | if self.hasRightChild(): 227 | succ = self.rightChild.findMin() 228 | else: 229 | if self.parent: 230 | if self.isLeftChild(): 231 | succ = self.parent 232 | else: 233 | self.parent.rightChild = None 234 | succ = self.parent.findSuccessor() 235 | self.parent.rightChild = self 236 | return succ 237 | 238 | 239 | def spliceOut(self): 240 | if self.isLeaf(): 241 | if self.isLeftChild(): 242 | self.parent.leftChild = None 243 | else: 244 | self.parent.rightChild = None 245 | elif self.hasAnyChildren(): 246 | if self.hasLeftChild(): 247 | if self.isLeftChild(): 248 | self.parent.leftChild = self.leftChild 249 | else: 250 | self.parent.rightChild = self.leftChild 251 | self.leftChild.parent = self.parent 252 | else: 253 | if self.isLeftChild(): 254 | self.parent.leftChild = self.rightChild 255 | else: 256 | self.parent.rightChild = self.rightChild 257 | self.rightChild.parent = self.parent 258 | 259 | def findMin(self): 260 | current = self 261 | while current.hasLeftChild(): 262 | current = current.leftChild 263 | return current 264 | 265 | def __iter__(self): 266 | """The standard inorder traversal of a binary tree.""" 267 | if self: 268 | if self.hasLeftChild(): 269 | for elem in self.leftChild: 270 | yield elem 271 | yield self.key 272 | if self.hasRightChild(): 273 | for elem in self.rightChild: 274 | yield elem 275 | 276 | 277 | class BinaryTreeTests(unittest.TestCase): 278 | def setUp(self): 279 | self.bst = BinarySearchTree() 280 | 281 | def testgetput(self): 282 | print('testgetput') 283 | self.bst.put(50,'a') 284 | self.bst.put(10,'b') 285 | self.bst.put(70,'c') 286 | self.bst.put(30,'d') 287 | self.bst.put(85,'d') 288 | self.bst.put(15,'e') 289 | self.bst.put(45,'f') 290 | print(self.bst.get(50)) 291 | assert self.bst.get(50) == 'a' 292 | assert self.bst.get(45) == 'f' 293 | assert self.bst.get(85) == 'd' 294 | assert self.bst.get(10) == 'b' 295 | assert self.bst.root.key == 50 296 | assert self.bst.root.leftChild.key == 10 297 | assert self.bst.root.rightChild.key == 70 298 | 299 | def testputoper(self): 300 | print('testputoper') 301 | self.bst[25] = 'g' 302 | assert self.bst[25] == 'g' 303 | 304 | def testFindSucc(self): 305 | print('testing findSucc') 306 | x = BinarySearchTree() 307 | x.put(10,'a') 308 | x.put(15,'b') 309 | x.put(6,'c') 310 | x.put(2,'d') 311 | x.put(8,'e') 312 | x.put(9,'f') 313 | assert x.root.leftChild.leftChild.findSuccessor().key == 6 314 | assert x.root.leftChild.rightChild.findSuccessor().key == 9 315 | assert x.root.leftChild.rightChild.rightChild.findSuccessor().key == 10 316 | 317 | def testSize(self): 318 | print('testing testSize') 319 | self.bst.put(50,'a') 320 | self.bst.put(10,'b') 321 | self.bst.put(70,'c') 322 | self.bst.put(30,'d') 323 | self.bst.put(85,'d') 324 | self.bst.put(15,'e') 325 | self.bst.put(45,'f') 326 | assert self.bst.length() == 7 327 | 328 | def testDelete(self): 329 | print('testing delete') 330 | self.bst.put(50,'a') 331 | self.bst.put(10,'b') 332 | self.bst.put(70,'c') 333 | self.bst.put(30,'d') 334 | self.bst.put(85,'d') 335 | self.bst.put(15,'e') 336 | self.bst.put(45,'f') 337 | self.bst.put(5,'g') 338 | print('initial inorder') 339 | self.bst.inorder() 340 | assert (10 in self.bst) == True 341 | self.bst.delete_key(10) 342 | print('delete 10 inorder') 343 | self.bst.inorder() 344 | assert (10 in self.bst) == False 345 | assert self.bst.root.leftChild.key == 15 346 | assert self.bst.root.leftChild.parent == self.bst.root 347 | assert self.bst.root.leftChild.rightChild.parent == self.bst.root.leftChild 348 | assert self.bst.get(30) == 'd' 349 | self.bst.delete_key(15) 350 | print('delete 15 inorder') 351 | self.bst.inorder() 352 | assert self.bst.root.leftChild.key == 30 353 | assert self.bst.root.leftChild.rightChild.key == 45 354 | assert self.bst.root.leftChild.rightChild.parent == self.bst.root.leftChild 355 | self.bst.delete_key(70) 356 | print('delete 70 inorder') 357 | self.bst.inorder() 358 | assert (85 in self.bst) == True 359 | assert self.bst.get(30) == 'd' 360 | print('root key = ', self.bst.root.key) 361 | print('left = ',self.bst.root.leftChild.key) 362 | print('left left = ',self.bst.root.leftChild.leftChild.key) 363 | print('left right = ',self.bst.root.leftChild.rightChild.key) 364 | print('right = ',self.bst.root.rightChild.key) 365 | self.bst.delete_key(50) 366 | assert self.bst.root.key == 85 367 | assert self.bst.root.leftChild.key == 30 368 | assert self.bst.root.rightChild == None 369 | assert self.bst.root.leftChild.leftChild.key == 5 370 | assert self.bst.root.leftChild.rightChild.key == 45 371 | assert self.bst.root.leftChild.leftChild.parent == self.bst.root.leftChild 372 | assert self.bst.root.leftChild.rightChild.parent == self.bst.root.leftChild 373 | print('new root key = ', self.bst.root.key) 374 | self.bst.inorder() 375 | self.bst.delete_key(45) 376 | assert self.bst.root.leftChild.key == 30 377 | self.bst.delete_key(85) 378 | assert self.bst.root.key == 30 379 | print('xxxx ',self.bst.root.leftChild.parent.key, self.bst.root.key) 380 | assert self.bst.root.leftChild.parent == self.bst.root 381 | self.bst.delete_key(30) 382 | assert self.bst.root.key == 5 383 | self.bst.inorder() 384 | print("final root = " + str(self.bst.root.key)) 385 | assert self.bst.root.key == 5 386 | self.bst.delete_key(5) 387 | assert self.bst.root == None 388 | 389 | def testDel2(self): 390 | self.bst.put(21,'a') 391 | self.bst.put(10,'b') 392 | self.bst.put(24,'c') 393 | self.bst.put(11,'d') 394 | self.bst.put(22,'d') 395 | self.bst.delete_key(10) 396 | assert self.bst.root.leftChild.key == 11 397 | assert self.bst.root.leftChild.parent == self.bst.root 398 | assert self.bst.root.rightChild.key == 24 399 | self.bst.delete_key(24) 400 | assert self.bst.root.rightChild.key == 22 401 | assert self.bst.root.rightChild.parent == self.bst.root 402 | self.bst.delete_key(22) 403 | self.bst.delete_key(21) 404 | print("del2 root = ",self.bst.root.key) 405 | assert self.bst.root.key == 11 406 | assert self.bst.root.leftChild == None 407 | assert self.bst.root.rightChild == None 408 | 409 | def testLarge(self): 410 | import random 411 | print('testing a large random tree') 412 | i = 0 413 | randList = [] 414 | while i < 10000: 415 | nrand = random.randrange(1,10000000) 416 | if nrand not in randList: 417 | randList.append(nrand) 418 | i += 1 419 | print(randList) 420 | for n in randList: 421 | self.bst.put(n,n) 422 | sortList = randList[:] 423 | sortList.sort() 424 | random.shuffle(randList) 425 | for n in randList: 426 | minNode = self.bst.root.findMin() 427 | if minNode: 428 | assert minNode.key == sortList[0] 429 | rootPos = sortList.index(self.bst.root.key) 430 | succ = self.bst.root.findSuccessor() 431 | if succ: 432 | assert succ.key == sortList[rootPos+1] 433 | else: 434 | assert self.bst.root.rightChild == None 435 | self.bst.delete_key(n) 436 | sortList.remove(n) 437 | 438 | assert self.bst.root == None 439 | 440 | def testIter(self): 441 | import random 442 | i = 0 443 | randList = [] 444 | while i < 100: 445 | nrand = random.randrange(1,10000) 446 | if nrand not in randList: 447 | randList.append(nrand) 448 | i += 1 449 | for n in randList: 450 | self.bst.put(n,n) 451 | sortList = randList[:] 452 | sortList.sort() 453 | 454 | i = 0 455 | for j in self.bst: 456 | assert j == sortList[i] 457 | i += 1 458 | # the following exercises all of the branches in deleting a node with one child 459 | def testCase1(self): 460 | self.bst.put(10,10) 461 | self.bst.put(7,7) 462 | self.bst.put(5,5) 463 | self.bst.put(1,1) 464 | self.bst.put(6,6) 465 | self.bst.delete_key(7) 466 | assert self.bst.root.leftChild.key == 5 467 | assert self.bst.root == self.bst.root.leftChild.parent 468 | assert self.bst.root.leftChild.leftChild.key == 1 469 | assert self.bst.root.leftChild.rightChild.key == 6 470 | 471 | def testCase2(self): 472 | self.bst = BinarySearchTree() 473 | self.bst.put(10,10) 474 | self.bst.put(15,15) 475 | self.bst.put(12,12) 476 | self.bst.put(11,11) 477 | self.bst.put(13,13) 478 | self.bst.delete_key(15) 479 | assert self.bst.root.rightChild.key == 12 480 | assert self.bst.root.rightChild.parent == self.bst.root 481 | assert self.bst.root.rightChild.leftChild.key == 11 482 | assert self.bst.root.rightChild.rightChild.key == 13 483 | 484 | def testCase3(self): 485 | self.bst = BinarySearchTree() 486 | self.bst.put(10,10) 487 | self.bst.put(6,6) 488 | self.bst.put(8,8) 489 | self.bst.put(7,7) 490 | self.bst.put(9,9) 491 | self.bst.delete_key(6) 492 | assert self.bst.root.leftChild.key == 8 493 | assert self.bst.root.leftChild.parent == self.bst.root 494 | assert self.bst.root.leftChild.leftChild.key == 7 495 | assert self.bst.root.leftChild.rightChild.key == 9 496 | 497 | def testCase4(self): 498 | self.bst = BinarySearchTree() 499 | self.bst.put(10,10) 500 | self.bst.put(15,15) 501 | self.bst.put(20,20) 502 | self.bst.put(17,17) 503 | self.bst.put(22,22) 504 | self.bst.delete_key(15) 505 | assert self.bst.root.rightChild.key == 20 506 | assert self.bst.root.rightChild.parent == self.bst.root 507 | assert self.bst.root.rightChild.rightChild.key == 22 508 | assert self.bst.root.rightChild.leftChild.key == 17 509 | 510 | def testCase5(self): 511 | self.bst.put(10,10) 512 | self.bst.put(20,20) 513 | self.bst.put(17,17) 514 | self.bst.put(22,22) 515 | self.bst.delete_key(10) 516 | assert self.bst.root.key == 20 517 | assert self.bst.root.leftChild.parent == self.bst.root 518 | assert self.bst.root.rightChild.parent == self.bst.root 519 | assert self.bst.root.leftChild.key == 17 520 | assert self.bst.root.rightChild.key == 22 521 | 522 | def testCase6(self): 523 | self.bst.put(10,10) 524 | self.bst.put(5,5) 525 | self.bst.put(1,1) 526 | self.bst.put(7,7) 527 | self.bst.delete_key(10) 528 | assert self.bst.root.key == 5 529 | assert self.bst.root.leftChild.parent == self.bst.root 530 | assert self.bst.root.rightChild.parent == self.bst.root 531 | assert self.bst.root.leftChild.key == 1 532 | assert self.bst.root.rightChild.key == 7 533 | 534 | def testBadDelete(self): 535 | self.bst.put(10,10) 536 | with self.assertRaises(KeyError): 537 | self.bst.delete_key(5) 538 | self.bst.delete_key(10) 539 | with self.assertRaises(KeyError): 540 | self.bst.delete_key(5) 541 | 542 | if __name__ == '__main__': 543 | import platform 544 | print(platform.python_version()) 545 | unittest.main() 546 | 547 | ### Local Variables: 548 | ### End: 549 | -------------------------------------------------------------------------------- /pythonds/trees/bst.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/896393962/Python_Data_Structures/a59a84cc26c210569a98e8c7fe702142390c1132/pythonds/trees/bst.pyc --------------------------------------------------------------------------------