BOOK
Data Structures and Abstractions with Java, Global Edition
Timothy M. Henry | Frank M. Carrano
(2015)
Additional Information
Book Details
Abstract
Data Structures and Abstractions with Java is suitable for one- or two-semester courses in data structures (CS-2) in the departments of Computer Science, Computer Engineering, Business, and Management Information Systems.
This is the most student-friendly data structures text available that introduces ADTs in individual, brief chapters – each with pedagogical tools to help students master each concept. Using the latest features of Java, this unique object-oriented presentation makes a clear distinction between specification and implementation to simplify learning, while providing maximum classroom flexibility.
Teaching and Learning Experience
This book will provide a better teaching and learning experience–for you and your students. It will help:
- Aid comprehension and facilitate teaching with an approachable format and content organization: Material is organized into small segments that focus a reader’s attention and provide greater instructional flexibility.
- Keep your course current with updated material: Content is refreshed throughout the book to reflect the latest advancements and to refine the pedagogy. All of the Java code is Java 8 compatible.
- Support learning with student-friendly pedagogy: In-text and online features help students master the material.
Table of Contents
Section Title | Page | Action | Price |
---|---|---|---|
Cover | Cover | ||
Title Page | Title Page | ||
Copyright | Copyright | ||
Contents | 15 | ||
Introduction: Organizing Data | 31 | ||
Prelude: Designing Classes | 35 | ||
Encapsulation | 36 | ||
Specifying Methods | 38 | ||
Comments | 38 | ||
Preconditions and Postconditions | 39 | ||
Assertions | 40 | ||
Java Interfaces | 41 | ||
Writing an Interface | 42 | ||
Implementing an Interface | 43 | ||
An Interface as a Data Type | 45 | ||
Extending an Interface | 46 | ||
Named Constants Within an Interface | 47 | ||
Choosing Classes | 49 | ||
Identifying Classes | 50 | ||
CRC Cards | 51 | ||
The Unified Modeling Language | 51 | ||
Reusing Classes | 54 | ||
Chapter 1: Bags\r | 61 | ||
The Bag | 62 | ||
A Bag’s Behaviors | 62 | ||
Specifying a Bag | 63 | ||
An Interface | 69 | ||
Using the ADT Bag | 71 | ||
Using an ADT Is Like Using a Vending Machine | 75 | ||
The ADT Set | 77 | ||
Java Class Library: The Interface set | 77 | ||
Java Interlude 1: Generics\r | 83 | ||
Generic Data Types | 83 | ||
Generic Types Within an Interface | 84 | ||
Generic Classes | 85 | ||
Chapter 2: Bag Implementations That Use Arrays\r | 89 | ||
Using a Fixed-Size Array to Implement the ADT Bag | 90 | ||
An Analogy | 90 | ||
A Group of Core Methods | 91 | ||
Implementing the Core Methods | 92 | ||
Making the Implementation Secure | 99 | ||
Testing the Core Methods | 101 | ||
Implementing More Methods | 103 | ||
Methods That Remove Entries | 106 | ||
Using Array Resizing to Implement the ADT Bag | 114 | ||
Resizing an Array | 114 | ||
A New Implementation of a Bag | 117 | ||
The Pros and Cons of Using an Array to Implement the ADT Bag | 120 | ||
Java Interlude 2: Exceptions\r | 125 | ||
The Basics | 126 | ||
Handling an Exception | 128 | ||
Postpone Handling: The throws Clause | 128 | ||
Handle It Now: The try-catch Blocks | 129 | ||
Multiple catch Blocks | 130 | ||
Throwing an Exception | 131 | ||
Chapter 3: A Bag Implementation That Links Data\r | 133 | ||
Linked Data | 134 | ||
Forming a Chain by Adding to Its Beginning | 135 | ||
A Linked Implementation of the ADT Bag | 137 | ||
The Private Class Node | 137 | ||
An Outline of the Class LinkedBag | 138 | ||
Defining Some Core Methods | 139 | ||
Testing the Core Methods | 143 | ||
The Method getFrequencyOf | 144 | ||
The Method contains | 145 | ||
Removing an Item from a Linked Chain | 146 | ||
The Methods remove and clear | 147 | ||
A Class Node That Has Set and Get Methods | 151 | ||
The Pros and Cons of Using a Chain to Implement the ADT Bag | 154 | ||
Chapter 4: The Efficiency of Algorithms\r | 159 | ||
Motivation | 160 | ||
Measuring an Algorithm’s Efficiency | 161 | ||
Counting Basic Operations | 163 | ||
Best, Worst, and Average Cases | 165 | ||
Big Oh Notation | 166 | ||
The Complexities of Program Constructs | 168 | ||
Picturing Efficiency | 170 | ||
The Efficiency of Implementations of the ADT Bag | 173 | ||
An Array-Based Implementation | 173 | ||
A Linked Implementation | 175 | ||
Comparing the Implementations | 176 | ||
Chapter 5: Stacks\r | 183 | ||
Specifications of the ADT Stack | 184 | ||
Using a Stack to Process Algebraic Expressions | 188 | ||
A Problem Solved: Checking for Balanced Delimiters in an Infix Algebraic Expression | 189 | ||
A Problem Solved: Transforming an Infix Expression to a Postfix Expression | 194 | ||
A Problem Solved: Evaluating Postfix Expressions | 199 | ||
A Problem Solved: Evaluating Infix Expressions | 201 | ||
The Program Stack | 203 | ||
Java Class Library: The Class Stack | 204 | ||
Chapter 6: Stack Implementations\r | 211 | ||
A Linked Implementation | 211 | ||
An Array-Based Implementation | 215 | ||
A Vector-Based Implementation | 219 | ||
Java Class Library: The Class Vector | 220 | ||
Using a Vector to Implement the ADT Stack | 220 | ||
Chapter 7: Recursion\r | 227 | ||
What Is Recursion? | 228 | ||
Tracing a Recursive Method | 232 | ||
Recursive Methods That Return a Value | 235 | ||
Recursively Processing an Array | 237 | ||
Recursively Processing a Linked Chain | 240 | ||
The Time Efficiency of Recursive Methods | 241 | ||
The Time Efficiency of countDown | 242 | ||
The Time Efficiency of Computing xn | 243 | ||
A Simple Solution to a Difficult Problem | 244 | ||
A Poor Solution to a Simple Problem | 249 | ||
Tail Recursion | 251 | ||
Indirect Recursion | 253 | ||
Using a Stack Instead of Recursion | 254 | ||
Java Interlude 3: More About Generics\r | 265 | ||
The Interface Comparable | 265 | ||
Generic Methods | 267 | ||
Bounded Type Parameters | 268 | ||
Wildcards | 270 | ||
Bounded Wildcards | 271 | ||
Chapter 8: An Introduction to Sorting\r | 275 | ||
Organizing Java Methods That Sort an Array | 276 | ||
Selection Sort | 277 | ||
Iterative Selection Sort | 278 | ||
Recursive Selection Sort | 280 | ||
The Efficiency of Selection Sort | 281 | ||
Insertion Sort | 281 | ||
Iterative Insertion Sort | 283 | ||
Recursive Insertion Sort | 285 | ||
The Efficiency of Insertion Sort | 287 | ||
Insertion Sort of a Chain of Linked Nodes | 287 | ||
Shell Sort | 290 | ||
The Algorithm | 292 | ||
The Efficiency of Shell Sort | 293 | ||
Comparing the Algorithms | 293 | ||
Chapter 9: Faster Sorting Methods\x0B | 301 | ||
Merge Sort | 302 | ||
Merging Arrays | 302 | ||
Recursive Merge Sort | 303 | ||
The Efficiency of Merge Sort | 305 | ||
Iterative Merge Sort | 307 | ||
Merge Sort in the Java Class Library | 307 | ||
Quick Sort | 308 | ||
The Efficiency of Quick Sort | 308 | ||
Creating the Partition | 309 | ||
Implementing Quick Sort | 312 | ||
Quick Sort in the Java Class Library | 314 | ||
Radix Sort | 314 | ||
Pseudocode for Radix Sort | 315 | ||
The Efficiency of Radix Sort | 316 | ||
Comparing the Algorithms | 316 | ||
Java Interlude 4: More About Exceptions\r | 323 | ||
Programmer-Defined Exception Classes | 323 | ||
Inheritance and Exceptions | 327 | ||
The finally Block | 328 | ||
Chapter 10: Queues, Deques, and Priority Queues\r | 331 | ||
The ADT Queue | 332 | ||
A Problem Solved: Simulating a Waiting Line | 336 | ||
A Problem Solved: Computing the Capital Gain in a Sale of Stock | 342 | ||
Java Class Library: The Interface Queue | 345 | ||
The ADT Deque | 346 | ||
A Problem Solved: Computing the Capital Gain in a Sale of Stock | 349 | ||
Java Class Library: The Interface Deque | 350 | ||
Java Class Library: The Class ArrayDeque | 351 | ||
The ADT Priority Queue | 351 | ||
A Problem Solved: Tracking Your Assignments | 353 | ||
Java Class Library: The Class PriorityQueue | 355 | ||
Chapter 11: Queue, Deque, and Priority Queue Implementations\r | 361 | ||
A Linked Implementation of a Queue | 362 | ||
An Array-Based Implementation of a Queue | 366 | ||
A Circular Array | 366 | ||
A Circular Array with One Unused Location | 369 | ||
Circular Linked Implementations of a Queue | 374 | ||
A Two-Part Circular Linked Chain | 375 | ||
Java Class Library: The Class AbstractQueue | 380 | ||
A Doubly Linked Implementation of a Deque | 381 | ||
Possible Implementations of a Priority Queue | 385 | ||
Chapter 12: Lists\r | 391 | ||
Specifications for the ADT List | 392 | ||
Using the ADT List | 399 | ||
Java Class Library: The Interface List | 403 | ||
Java Class Library: The Class ArrayList | 403 | ||
Chapter 13: A List Implementation That Uses an Array\r | 409 | ||
Using an Array to Implement the ADT List | 410 | ||
An Analogy | 410 | ||
The Java Implementation | 412 | ||
The Efficiency of Using an Array to Implement the ADT List | 420 | ||
Chapter 14: A List Implementation That Links Data\r | 427 | ||
Operations on a Chain of Linked Nodes | 428 | ||
Adding a Node at Various Positions | 428 | ||
Removing a Node from Various Positions | 432 | ||
The Private Method getNodeAt | 433 | ||
Beginning the Implementation | 434 | ||
The Data Fields and Constructor | 435 | ||
Adding to the End of the List | 437 | ||
Adding at a Given Position Within the List | 438 | ||
The Methods isEmpty and toArray | 439 | ||
Testing the Core Methods | 441 | ||
Continuing the Implementation | 442 | ||
A Refined Implementation | 445 | ||
The Tail Reference | 445 | ||
The Efficiency of Using a Chain to Implement the ADT List | 448 | ||
Java Class Library: The Class LinkedList | 450 | ||
Java Interlude 5: Iterators\r | 457 | ||
What Is an Iterator? | 457 | ||
The Interface Iterator | 459 | ||
The Interface Iterable | 461 | ||
Using the Interface Iterator | 461 | ||
Iterable and for-each Loops | 465 | ||
The Interface ListIterator | 466 | ||
The Interface List Revisited | 469 | ||
Using the Interface ListIterator | 470 | ||
Chapter 15: Iterators for the ADT List\r | 473 | ||
Ways to Implement an Iterator | 474 | ||
A Separate Class Iterator | 474 | ||
An Inner Class Iterator | 477 | ||
A Linked Implementation | 478 | ||
An Array-Based Implementation | 481 | ||
Why Are Iterator Methods in Their Own Class? | 484 | ||
An Array-Based Implementation of the Interface ListIterator | 486 | ||
The Inner Class | 487 | ||
Java Interlude 6: Mutable and Immutable Objects\r | 499 | ||
Mutable Objects | 500 | ||
Immutable Objects | 502 | ||
Creating a Read-Only Class | 502 | ||
Companion Classes | 504 | ||
Chapter 16: Sorted Lists\r | 507 | ||
Specifications for the ADT Sorted List | 508 | ||
Using the ADT Sorted List | 511 | ||
A Linked Implementation | 512 | ||
The Method add | 513 | ||
The Efficiency of the Linked Implementation | 520 | ||
An Implementation That Uses the ADT List | 520 | ||
Efficiency Issues | 523 | ||
Java Interlude 7: Inheritance and Polymorphism\r | 529 | ||
Further Aspects of Inheritance | 529 | ||
When to Use Inheritance | 529 | ||
Protected Access | 530 | ||
Abstract Classes and Methods | 531 | ||
Interfaces Versus Abstract Classes | 533 | ||
Polymorphism | 534 | ||
Chapter 17: Inheritance and Lists\r | 541 | ||
Using Inheritance to Implement a Sorted List | 542 | ||
Designing a Base Class | 544 | ||
Creating an Abstract Base Class | 549 | ||
An Efficient Implementation of a Sorted List | 551 | ||
The Method add | 551 | ||
Chapter 18: Searching\r | 557 | ||
The Problem | 558 | ||
Searching an Unsorted Array | 558 | ||
An Iterative Sequential Search of an Unsorted Array | 559 | ||
A Recursive Sequential Search of an Unsorted Array | 560 | ||
The Efficiency of a Sequential Search of an Array | 562 | ||
Searching a Sorted Array | 562 | ||
A Sequential Search of a Sorted Array | 562 | ||
A Binary Search of a Sorted Array | 563 | ||
Java Class Library: The Method binarySearch | 568 | ||
The Efficiency of a Binary Search of an Array | 568 | ||
Searching an Unsorted Chain | 569 | ||
An Iterative Sequential Search of an Unsorted Chain | 570 | ||
A Recursive Sequential Search of an Unsorted Chain | 570 | ||
The Efficiency of a Sequential Search of a Chain | 571 | ||
Searching a Sorted Chain | 571 | ||
A Sequential Search of a Sorted Chain | 571 | ||
A Binary Search of a Sorted Chain | 572 | ||
Choosing a Search Method | 572 | ||
Java Interlude 8: Generics Once Again\r | 579 | ||
More Than One Generic Type | 579 | ||
Chapter 19: Dictionaries\r | 581 | ||
Specifications for the ADT Dictionary | 582 | ||
A Java Interface | 586 | ||
Iterators | 587 | ||
Using the ADT Dictionary | 588 | ||
A Problem Solved: A Directory of Telephone Numbers | 589 | ||
A Problem Solved: The Frequency of Words | 594 | ||
A Problem Solved: A Concordance of Words | 597 | ||
Java Class Library: The Interface Map | 600 | ||
Chapter 20: Dictionary Implementations\r | 605 | ||
Array-Based Implementations | 606 | ||
An Unsorted Array-Based Dictionary | 606 | ||
A Sorted Array-Based Dictionary | 611 | ||
Linked Implementations | 616 | ||
An Unsorted Linked Dictionary | 617 | ||
A Sorted Linked Dictionary | 618 | ||
Chapter 21: Introducing Hashing\r | 625 | ||
What Is Hashing? | 626 | ||
Hash Functions | 629 | ||
Computing Hash Codes | 629 | ||
Compressing a Hash Code into an Index for the Hash Table | 632 | ||
Resolving Collisions | 633 | ||
Open Addressing with Linear Probing | 633 | ||
Open Addressing with Quadratic Probing | 638 | ||
Open Addressing with Double Hashing | 639 | ||
A Potential Problem with Open Addressing | 641 | ||
Separate Chaining | 642 | ||
Chapter 22: Hashing as a Dictionary Implementation\r | 649 | ||
The Efficiency of Hashing | 650 | ||
The Load Factor | 650 | ||
The Cost of Open Addressing | 651 | ||
The Cost of Separate Chaining | 653 | ||
Rehashing | 654 | ||
Comparing Schemes for Collision Resolution | 655 | ||
A Dictionary Implementation That Uses Hashing | 656 | ||
Entries in the Hash Table | 656 | ||
Data Fields and Constructors | 657 | ||
The Methods getValue, remove, and add | 659 | ||
Iterators | 664 | ||
Java Class Library: The Class HashMap | 665 | ||
Jave Class Library: The Class HashSet | 666 | ||
Chapter 23: Trees\r | 669 | ||
Tree Concepts | 670 | ||
Hierarchical Organizations | 670 | ||
Tree Terminology | 672 | ||
Traversals of a Tree | 676 | ||
Traversals of a Binary Tree | 677 | ||
Traversals of a General Tree | 679 | ||
Java Interfaces for Trees | 680 | ||
Interfaces for All Trees | 680 | ||
An Interface for Binary Trees | 681 | ||
Examples of Binary Trees | 682 | ||
Expression Trees | 683 | ||
Decision Trees | 684 | ||
Binary Search Trees | 688 | ||
Heaps | 690 | ||
Examples of General Trees | 693 | ||
Parse Trees | 693 | ||
Game Trees | 693 | ||
Chapter 24: Tree Implementations\r | 703 | ||
The Nodes in a Binary Tree | 704 | ||
A Class of Binary Nodes | 705 | ||
An Implementation of the ADT Binary Tree | 706 | ||
Creating a Basic Binary Tree | 707 | ||
The Method privateSetTree | 708 | ||
Accessor and Mutator Methods | 711 | ||
Computing the Height and Counting Nodes | 711 | ||
Traversals | 712 | ||
An Implementation of an Expression Tree | 717 | ||
General Trees | 718 | ||
A Node for a General Tree | 718 | ||
Using a Binary Tree to Represent a General Tree | 719 | ||
Java Interlude 9: Cloning\r | 727 | ||
Cloneable Objects | 727 | ||
Cloning an Array | 733 | ||
Cloning a Chain | 736 | ||
A Sorted List of Clones | 739 | ||
Cloning a Binary Node | 741 | ||
Chapter 25: A Binary Search Tree Implementation\r | 743 | ||
Getting Started | 744 | ||
An Interface for the Binary Search Tree | 745 | ||
Duplicate Entries | 747 | ||
Beginning the Class Definition | 748 | ||
Searching and Retrieving | 749 | ||
Traversing | 750 | ||
Adding an Entry | 751 | ||
A Recursive Implementation | 752 | ||
An Iterative Implementation | 755 | ||
Removing an Entry | 756 | ||
Removing an Entry Whose Node Is a Leaf | 757 | ||
Removing an Entry Whose Node Has One Child | 757 | ||
Removing an Entry Whose Node Has Two Children | 758 | ||
Removing an Entry in the Root | 761 | ||
A Recursive Implementation | 762 | ||
An Iterative Implementation | 765 | ||
The Efficiency of Operations | 769 | ||
The Importance of Balance | 770 | ||
The Order in Which Nodes Are Added | 770 | ||
An Implementation of the ADT Dictionary | 770 | ||
Chapter 26: A Heap Implementation\r | 783 | ||
Reprise: The ADT Heap | 784 | ||
Using an Array to Represent a Heap | 784 | ||
Adding an Entry | 787 | ||
Removing the Root | 790 | ||
Creating a Heap | 793 | ||
Heap Sort | 796 | ||
Chapter 27: Balanced Search Trees\r | 805 | ||
AVL Trees | 806 | ||
Single Rotations | 806 | ||
Double Rotations | 809 | ||
Implementation Details | 813 | ||
2-3 Trees | 817 | ||
Searching a 2-3 Tree | 818 | ||
Adding Entries to a 2-3 Tree | 819 | ||
Splitting Nodes During Addition | 821 | ||
2-4 Trees | 822 | ||
Adding Entries to a 2-4 Tree | 823 | ||
Comparing AVL, 2-3, and 2-4 Trees | 825 | ||
Red-Black Trees | 826 | ||
Properties of a Red-Black Tree | 827 | ||
Adding Entries to a Red-Black Tree | 828 | ||
Java Class Library: The Class TreeMap | 834 | ||
B-Trees | 834 | ||
Chapter 28: Graphs\r | 841 | ||
Some Examples and Terminology | 842 | ||
Road Maps | 842 | ||
Airline Routes | 845 | ||
Mazes | 845 | ||
Course Prerequisites | 846 | ||
Trees | 846 | ||
Traversals | 847 | ||
Breadth-First Traversal | 848 | ||
Depth-First Traversal | 849 | ||
Topological Order | 851 | ||
Paths | 854 | ||
Finding a Path | 854 | ||
The Shortest Path in an Unweighted Graph | 854 | ||
The Shortest Path in a Weighted Graph | 857 | ||
Java Interfaces for the ADT Graph | 860 | ||
Chapter 29: Graph Implementations\r | 871 | ||
An Overview of Two Implementations | 872 | ||
The Adjacency Matrix | 872 | ||
The Adjacency List | 873 | ||
Vertices and Edges | 874 | ||
Specifying the Class Vertex | 875 | ||
The Inner Class Edge | 877 | ||
Implementing the Class Vertex | 878 | ||
An Implementation of the ADT Graph | 881 | ||
Basic Operations | 881 | ||
Graph Algorithms | 884 | ||
Appendix A: Documentation and Programming Style\r | 891 | ||
Naming Variables and Classes | 891 | ||
Indenting | 892 | ||
Comments | 892 | ||
Single-Line Comments | 893 | ||
Comment Blocks | 893 | ||
When to Write Comments | 893 | ||
Java Documentation Comments | 893 | ||
Appendix B: Java Basics (online)\r | 897 | ||
Introduction | 897 | ||
Applications and Applets | 897 | ||
Objects and Classes | 897 | ||
A First Java Application Program | 897 | ||
Elements of Java | 897 | ||
Identifiers | 897 | ||
Reserved Words | 897 | ||
Variables | 897 | ||
Primitive Types | 897 | ||
Constants | 897 | ||
Assignment Statements | 897 | ||
Assignment Compatibilities | 897 | ||
Type Casting | 897 | ||
Arithmetic Operators and Expressions | 897 | ||
Parentheses and Precedence Rules | 897 | ||
Increment and Decrement Operators | 897 | ||
Special Assignment Operators | 897 | ||
Named Constants | 897 | ||
The Class Math | 897 | ||
Simple Input and Output Using the Keyboard and Screen | 897 | ||
Screen Output | 897 | ||
Keyboard Input Using the Class Scanner | 897 | ||
The if-else Statement | 897 | ||
Boolean Expressions | 897 | ||
Nested Statements | 897 | ||
Multiway if-else Statements | 897 | ||
The Conditional Operator (Optional) | 897 | ||
The switch Statement | 897 | ||
Enumerations | 897 | ||
Scope | 897 | ||
Loops | 897 | ||
The while Statement | 897 | ||
The for Statement | 897 | ||
The do-while Statement | 897 | ||
Additional Loop Information | 897 | ||
The Class String | 897 | ||
Characters Within Strings | 897 | ||
Concatenation of Strings | 897 | ||
String Methods | 897 | ||
The Class StringBuilder | 897 | ||
Using Scanner to Extract Pieces of a String | 897 | ||
Arrays | 897 | ||
Array Parameters and Returned Values | 897 | ||
Initializing Arrays | 897 | ||
Array Index Out of Bounds | 897 | ||
Use of = and == with Arrays | 897 | ||
Arrays and the For-Each Loop | 897 | ||
Multidimensional Arrays | 897 | ||
Wrapper Classes | 897 | ||
Appendix C: Java Classes (online)\r | 898 | ||
Objects and Classes | 898 | ||
Using the Methods in a Java Class | 898 | ||
References and Aliases | 898 | ||
Defining a Java Class | 898 | ||
Method Definitions | 898 | ||
Arguments and Parameters | 898 | ||
Passing Arguments | 898 | ||
A Definition of the Class Name | 898 | ||
Constructors | 898 | ||
The Method toString | 898 | ||
Methods That Call Other Methods | 898 | ||
Methods That Return an Instance of Their Class | 898 | ||
Static Fields and Methods | 898 | ||
Overloading Methods | 898 | ||
Enumeration as a Class | 898 | ||
Packages | 898 | ||
The Java Class Library | 898 | ||
Appendix D: Creating Classes from Other Classes\r | 899 | ||
Composition | 899 | ||
Adapters | 899 | ||
Inheritance | 899 | ||
Invoking Constructors from Within Constructors | 899 | ||
Private Fields and Methods of the Superclass | 899 | ||
Overriding and Overloading Methods | 899 | ||
Multiple Inheritance | 899 | ||
Type Compatibility and Superclasses | 899 | ||
The Class Object | 899 | ||
Appendix E: File Input and Output (online)\r | 917 | ||
Preliminaries | 917 | ||
Why Files? | 917 | ||
Streams | 917 | ||
The Kinds of Files | 917 | ||
File Names | 917 | ||
Text Files | 917 | ||
Creating a Text File | 917 | ||
Reading a Text File | 917 | ||
Changing Existing Data in a Text File | 917 | ||
Defining a Method to Open a Stream | 917 | ||
Binary Files | 917 | ||
Creating a Binary File of Primitive Data | 917 | ||
Reading a Binary File of Primitive Data | 917 | ||
Strings in a Binary File | 917 | ||
Object Serialization | 917 | ||
Glossary (online) | 918 | ||
Index | 919 | ||
A | 919 | ||
B | 920 | ||
C | 920 | ||
D | 921 | ||
E | 921 | ||
F | 922 | ||
G | 922 | ||
H | 922 | ||
I | 923 | ||
J | 923 | ||
K | 923 | ||
L | 924 | ||
M | 924 | ||
N | 924 | ||
O | 924 | ||
P | 925 | ||
Q | 925 | ||
R | 925 | ||
S | 926 | ||
T | 926 | ||
U | 927 | ||
V | 927 | ||
W | 927 |