Data structures using C and C++
By: Yedidyah Langsam, Moshe J. Augenstein, Aaron M. Tenenbaum
Contributors: Augenstein, Moshe, 1947-; Tenenbaum, Aaron M.; Tenenbaum, Aaron M.
Edition: 2nd ed., Eastern Economy ed.
Publisher: Prentice-Hall of India
Published: 2000
Place of publication: New Delhi
Language: eng
Number of pages: 672
ISBN-13: 9788120311770
Subjects: C++ (Computer program language); C (Computer program language); Data structures (Computer science)
Description: An introduction to the fundamentals of data structures, this book explores abstract concepts and considers how those concepts are useful in problem solving. It explains how the abstractions can be made concrete by using a programming language, and shows how to use to C language for advance programming and how to develop the advanced features of C++. It features a wealth of tested and debugged working programs in C and C++.This text is designed for courses in data structures and programming.
Notes: Revised edition of: Data structures using C / Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein. c1990.

Includes bibliographical references (pages 647-661) 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