Data structures using Cand C[plus plus]
By: Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein.
Contributors: Augenstein, Moshe J.; Tenenbaum, Aaron M.
Publisher: Prentice Hall; Prentice-Hall International (UK)
Published: 1996
Place of publication: Upper Saddle River, NJ; London
Language: eng
Number of pages: 672
Subjects: C (Computer program language); Data structures (Computer science)
Other titles: Data structures using C and C[plus plus].
Notes: Rev. ed. of: Data structures using C / Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein. 1990.

Includes bibliographies and index.
Table of contents: title: Preface
pagenum: xiii; label: 1
title: Introduction to Data Structures
pagenum: 1; label: 1.1
title: Information and Meaning
pagenum: 1; title: Binary and Decimal Integers
pagenum: 2; title: Real Numbers
pagenum: 4; title: Character Strings
pagenum: 5; title: Hardware and Software
pagenum: 6; title: Concept of Implementation
pagenum: 8; title: Example
pagenum: 8; title: Abstract Data Types
pagenum: 13; title: Sequences as Value Definitions
pagenum: 17; title: ADT for Varying-length Character Strings
pagenum: 18; title: Data Types in C
pagenum: 20; title: Pointers in C
pagenum: 20; title: Data Structures and C
pagenum: 22; title: Exercises
pagenum: 24; label: 1.2
title: Arrays in C
pagenum: 24; title: The Array as an ADT
pagenum: 26; title: Using One-Dimensional Arrays
pagenum: 27; title: Implementing One-Dimensional Arrays
pagenum: 28; title: Arrays as Parameters
pagenum: 31; title: Character Strings in C
pagenum: 32; title: Character String Operations
pagenum: 33; title: Two-Dimensional Arrays
pagenum: 34; title: Multidimensional Arrays
pagenum: 37; title: Exercises
pagenum: 40; label: 1.3
title: Structures in C
pagenum: 42; title: Implementing Structures
pagenum: 46; title: Unions
pagenum: 48; title: Implementation of Unions
pagenum: 51; title: Structure Parameters
pagenum: 52; title: Representing Other Data Structures
pagenum: 54; title: Rational Numbers
pagenum: 55; title: Allocation of Storage and Scope of Variables
pagenum: 58; title: Exercises
pagenum: 62; label: 1.4
title: Classes in C++
pagenum: 63; title: The Class Rational
pagenum: 64; title: Using the Class Rational
pagenum: 65; title: Implementing the Methods
pagenum: 67; title: Overloading
pagenum: 72; title: Inheritance
pagenum: 72; title: Constructors
pagenum: 74; title: Exercises
pagenum: 76; label: 2
title: The Stack
pagenum: 77; label: 2.1
title: Definition and Examples
pagenum: 77; title: Primitive Operations
pagenum: 80; title: Example
pagenum: 81; title: The Stack as an Abstract Data Type
pagenum: 84; title: Exercises
pagenum: 85; label: 2.2
title: Representing Stacks in C
pagenum: 86; title: Implementing the pop Operation
pagenum: 90; title: Testing for Exceptional Conditions
pagenum: 91; title: Implementing the Push Operation
pagenum: 92; title: Exercises
pagenum: 95; label: 2.3
title: Example: Infix, Postfix, and Prefix
pagenum: 95; title: Basic Definitions and Examples
pagenum: 95; title: Evaluating a Postfix Expression
pagenum: 98; title: Program to Evaluate a Postfix Expression
pagenum: 99; title: Limitations of the Program
pagenum: 102; title: Converting an Expression from Infix to Postfix
pagenum: 102; title: Program to Convert an Expression from Infix to Postfix
pagenum: 106; title: Stacks in C++ Using Templates
pagenum: 109; title: Exercises
pagenum: 115; label: 3
title: Recursion
pagenum: 117; label: 3.1
title: Recursive Definition and Processes
pagenum: 117; title: Factorial Function
pagenum: 117; title: Multiplication of Natural Numbers
pagenum: 120; title: Fibonacci Sequence
pagenum: 121; title: Binary Search
pagenum: 122; title: Properties of Recursive Definitions or Algorithms
pagenum: 125; title: Exercises
pagenum: 126; label: 3.2
title: Recursion in C
pagenum: 127; title: Factorial in C
pagenum: 127; title: Fibonacci Numbers in C
pagenum: 131; title: Binary Search in C
pagenum: 132; title: Recursive Chains
pagenum: 134; title: Recursive Definition of Algebraic Expressions
pagenum: 135; title: Exercises
pagenum: 138; label: 3.3
title: Writing Recursive Programs
pagenum: 140; title: The Towers of Hanoi Problem
pagenum: 142; title: Translation from Prefix to Postfix Using Recursion
pagenum: 146; title: Exercises
pagenum: 150; label: 3.4
title: Simulating Recursion
pagenum: 153; title: Return from a Function
pagenum: 155; title: Implementing Recursive Functions
pagenum: 156; title: Simulation of Factorial
pagenum: 157; title: Improving the Simulated Routine
pagenum: 161; title: Eliminating gotos
pagenum: 163; title: Simulating the Towers of Hanoi
pagenum: 165; title: Exercises
pagenum: 170; label: 3.5
title: Efficiency of Recursion
pagenum: 172; title: Exercises
pagenum: 173; label: 4
title: Queues and Lists
pagenum: 174; label: 4.1
title: The Queue and Its Sequential Representation
pagenum: 174; title: The Queue as an Abstract Data Type
pagenum: 176; title: C Implementation of Queues
pagenum: 176; title: insert Operation
pagenum: 180; title: Priority Queue
pagenum: 182; title: Array Implementation of a Priority Queue
pagenum: 183; title: Exercises
pagenum: 184; label: 4.2
title: Linked Lists
pagenum: 186; title: Inserting and Removing Nodes from a List
pagenum: 187; title: Linked Implementation of Stacks
pagenum: 191; title: getnode and freenode Operations
pagenum: 193; title: Linked Implementation of Queues
pagenum: 194; title: Linked List as a Data Structure
pagenum: 195; title: Examples of List Operations
pagenum: 198; title: List Implementation of Priority Queues
pagenum: 200; title: Header Nodes
pagenum: 200; title: Exercises
pagenum: 202; label: 4.3
title: Lists in C
pagenum: 203; title: Array Implementation of Lists
pagenum: 203; title: Limitations of the Array Implementation
pagenum: 206; title: Allocating and Freeing Dynamic Variables
pagenum: 207; title: Linked Lists Using Dynamic Variables
pagenum: 211; title: Queues as Lists in C
pagenum: 213; title: Examples of List Operations in C
pagenum: 215; title: Noninteger and Nonhomogeneous Lists
pagenum: 216; title: Comparing the Dynamic and Array Implementations of Lists
pagenum: 217; title: Implementing Header Nodes
pagenum: 218; title: Exercises
pagenum: 219; label: 4.4
title: Example: Simulation Using Linked Lists
pagenum: 220; title: Simulation Process
pagenum: 221; title: Data Structures
pagenum: 222; title: Simulation Program
pagenum: 223; title: Exercises
pagenum: 227; label: 4.5
title: Other List Structures
pagenum: 228; title: Circular Lists
pagenum: 229; title: Stack as a Circular List
pagenum: 229; title: Queue as a Circular List
pagenum: 230; title: Primitive Operations on Circular Lists
pagenum: 231; title: The Josephus Problem
pagenum: 232; title: Header Nodes
pagenum: 234; title: Addition of Long Positive Integers Using Circular Lists
pagenum: 235; title: Doubly Linked Lists
pagenum: 237; title: Addition of Long Integers Using Doubly Linked Lists
pagenum: 239; title: Exercises
pagenum: 244; label: 4.6
title: The Linked List in C++
pagenum: 245; title: Exercises
pagenum: 248; label: 5
title: Trees
pagenum: 249; label: 5.1
title: Binary Trees
pagenum: 249; title: Operations on Binary Trees
pagenum: 254; title: Applications of Binary Trees
pagenum: 255; title: Exercises
pagenum: 260; label: 5.2
title: Binary Tree Representations
pagenum: 261; title: Node Representation of Binary Trees
pagenum: 261; title: Internal and External Nodes
pagenum: 264; title: Implicit Array Representation of Binary Trees
pagenum: 265; title: Choosing a Binary Tree Representation
pagenum: 269; title: Binary Tree Traversals in C
pagenum: 270; title: Threaded Binary Trees
pagenum: 273; title: Traversal Using a father Field
pagenum: 277; title: Heterogeneous Binary Trees
pagenum: 280; title: Exercises
pagenum: 281; label: 5.3
title: Example: The Huffman Algorithm
pagenum: 283; title: The Huffman Algorithm
pagenum: 287; title: C Program
pagenum: 288; title: Exercises
pagenum: 291; label: 5.4
title: Representing Lists as Binary Trees
pagenum: 292; title: Finding the kth Element
pagenum: 294; title: Deleting an Element
pagenum: 296; title: Implementing Tree-Represented Lists in C
pagenum: 299; title: Constructing a Tree-Represented List
pagenum: 301; title: The Josephus Problem Revisited
pagenum: 303; title: Exercises
pagenum: 304; label: 5.5
title: Trees and Their Applications
pagenum: 305; title: C Representations of Trees
pagenum: 307; title: Tree Traversals
pagenum: 309; title: General Expressions as Trees
pagenum: 312; title: Evaluating an Expression Tree
pagenum: 315; title: Constructing a Tree
pagenum: 317; title: Exercises
pagenum: 319; label: 5.6
title: Example: Game Trees
pagenum: 321; title: Exercises
pagenum: 327; label: 6
title: Sorting
pagenum: 329; label: 6.1
title: General Background
pagenum: 329; title: Efficiency Considerations
pagenum: 331; title: O Notation
pagenum: 334; title: Efficiency of Sorting
pagenum: 336; title: Exercises
pagenum: 338; label: 6.2
title: Exchange Sorts
pagenum: 339; title: Bubble Sort
pagenum: 339; title: Quicksort
pagenum: 342; title: Efficiency of Quicksort
pagenum: 348; title: Exercises
pagenum: 350; label: 6.3
title: Selection and Tree Sorting
pagenum: 351; title: Straight Selection Sort
pagenum: 352; title: Binary Tree Sorts
pagenum: 353; title: Heapsort
pagenum: 356; title: Heap as a Priority Queue
pagenum: 357; title: Sorting Using a Heap
pagenum: 359; title: Heapsort Procedure
pagenum: 362; title: Exercises
pagenum: 364; label: 6.4
title: Insertion Sorts
pagenum: 365; title: Simple Insertion
pagenum: 365; title: Shell Sort
pagenum: 366; title: Address Calculation Sort
pagenum: 370; title: Exercises
pagenum: 372; label: 6.5
title: Merge and Radix Sorts
pagenum: 373; title: Merge Sorts
pagenum: 373; title: The Cook-Kim Algorithm
pagenum: 377; title: Radix Sort
pagenum: 377; title: Exercises
pagenum: 381; label: 7
title: Searching
pagenum: 384; label: 7.1
title: Basic Search Techniques
pagenum: 384; title: Dictionary as an Abstract Data Type
pagenum: 385; title: Algorithmic Notation
pagenum: 386; title: Sequential Searching
pagenum: 387; title: Efficiency of Sequential Searching
pagenum: 389; title: Reordering a List for Maximum Search Efficiency
pagenum: 390; title: Searching an Ordered Table
pagenum: 392; title: Indexed Sequential Search
pagenum: 392; title: Binary Search
pagenum: 394; title: Interpolation Search
pagenum: 397; title: Exercises
pagenum: 398; label: 7.2
title: Tree Searching
pagenum: 401; title: Inserting into a Binary Search Tree
pagenum: 404; title: Deleting from a Binary Search Tree
pagenum: 404; title: Efficiency of Binary Search Tree Operations
pagenum: 407; title: Efficiency of Nonuniform Binary Search Trees
pagenum: 409; title: Optimum Search Trees
pagenum: 411; title: Balanced Trees
pagenum: 413; title: Exercises
pagenum: 421; label: 7.3
title: General Search Trees
pagenum: 423; title: Multiway Search Trees
pagenum: 423; title: Searching a Multiway Tree
pagenum: 426; title: Implementing a Multiway Tree
pagenum: 427; title: Traversing a Multiway Tree
pagenum: 428; title: Insertion in a Multiway Search Tree
pagenum: 430; title: B-Trees
pagenum: 435; title: Algorithms for B-Tree Insertion
pagenum: 439; title: Computing father and index
pagenum: 445; title: Deletion in Multiway Search Trees
pagenum: 449; title: Efficiency of Multiway Search Trees
pagenum: 453; title: Improving the B-Tree
pagenum: 456; title: B+-Trees
pagenum: 460; title: Digital Search Trees
pagenum: 461; title: Tries
pagenum: 465; title: Exercises
pagenum: 467; label: 7.4
title: Hashing
pagenum: 468; title: Resolving Hash Clashes by Open Addressing
pagenum: 470; title: Deleting Items from a Hash Table
pagenum: 473; title: Efficiency of Rehashing Methods
pagenum: 474; title: Hash Table Reordering
pagenum: 476; title: Brent's Method
pagenum: 477; title: Binary Tree Hashing
pagenum: 480; title: Improvements with Additional Memory
pagenum: 482; title: Coalesced Hashing
pagenum: 485; title: Separate Chaining
pagenum: 488; title: Hashing in External Storage
pagenum: 491; title: Separator Method
pagenum: 493; title: Dynamic Hashing and Extendible Hashing
pagenum: 494; title: Linear Hashing
pagenum: 499; title: Choosing a Hash Function
pagenum: 505; title: Perfect Hash Functions
pagenum: 508; title: Universal Classes of Hash Functions
pagenum: 512; title: Exercises
pagenum: 513; label: 8
title: Graphs and Their Applications
pagenum: 515; label: 8.1
title: Graphs
pagenum: 515; title: Application of Graphs
pagenum: 517; title: C Representation of Graphs
pagenum: 520; title: Transitive Closure
pagenum: 521; title: Warshall's Algorithm
pagenum: 525; title: Shortest-Path Algorithm
pagenum: 526; title: Exercises
pagenum: 528; label: 8.2
title: A Flow Problem
pagenum: 529; title: Improving a Flow Function
pagenum: 531; title: Example
pagenum: 535; title: Algorithm and Program
pagenum: 537; title: Exercises
pagenum: 541; label: 8.3
title: Linked Representation of Graphs
pagenum: 541; title: Dijkstra's Algorithm Revisited
pagenum: 547; title: Organizing the Set of Graph Nodes
pagenum: 549; title: Application to Scheduling
pagenum: 550; title: C Program
pagenum: 554; title: Exercises
pagenum: 557; label: 8.4
title: Graph Traversal and Spanning Forests
pagenum: 560; title: Traversal Methods for Graphs
pagenum: 560; title: Spanning Forests
pagenum: 563; title: Undirected Graphs and Their Traversals
pagenum: 566; title: Depth-First Traversal
pagenum: 568; title: Applications of Depth-First Traversal
pagenum: 571; title: Efficiency of Depth-First Traversal
pagenum: 572; title: Breadth-First Traversal
pagenum: 573; title: Minimum Spanning Trees
pagenum: 574; title: Kruskal's Algorithm
pagenum: 576; title: Round-Robin Algorithm
pagenum: 577; title: Exercises
pagenum: 577; label: 9
title: Storage Management
pagenum: 579; label: 9.1
title: General Lists
pagenum: 579; title: Operations That Modify a List
pagenum: 582; title: Examples
pagenum: 583; title: Linked List Representation of a List
pagenum: 584; title: Representation of Lists
pagenum: 587; title: crlist Operation
pagenum: 588; title: Use of List Headers
pagenum: 591; title: Freeing List Nodes
pagenum: 593; title: General Lists in C
pagenum: 594; title: Programming Languages and Lists
pagenum: 597; title: Exercises
pagenum: 599; label: 9.2
title: Automatic List Management
pagenum: 599; title: Reference Count Method
pagenum: 599; title: Garbage Collection
pagenum: 605; title: Algorithms for Garbage Collection
pagenum: 606; title: Collection and Compaction
pagenum: 613; title: Variations of Garbage Collection
pagenum: 619; title: Exercises
pagenum: 620; label: 9.3
title: Dynamic Memory Management
pagenum: 621; title: Compaction of Blocks of Storage
pagenum: 622; title: First Fit, Best Fit, and Worst Fit
pagenum: 625; title: Improvements in the First-Fit Method
pagenum: 631; title: Freeing Storage Blocks
pagenum: 632; title: Boundary Tag Method
pagenum: 633; title: Buddy System
pagenum: 636; title: Other Buddy Systems
pagenum: 643; title: Exercises
pagenum: 645; title: Bibliography and References
pagenum: 647; title: Index
pagenum: 663