Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword or section
Like this

Table Of Contents

0 of .
Results for:
No results containing your search query
P. 1


Ratings: (0)|Views: 268|Likes:
Published by Sheila Rt

More info:

Published by: Sheila Rt on Apr 07, 2011
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





A Practical Introduction toData Structures and AlgorithmAnalysis
Edition 3.1 (C++ Version)Clifford A. Shaffer
Department of Computer ScienceVirginia TechBlacksburg, VA 24061January 3, 2011Copyrightc
2009-2011 by Clifford A. Shaffer.This document is made freely available for educational and othernon-commercial use.You may make copies of this file and redistribute it without charge.You may extract portions of this document provided that the front page,including the title, author, and this notice are included.Any commercial use of this document requires the written consent of theauthor.The author can be reached at
.Further information about this text is available at
Preface xiii
I Preliminaries 1
1 Data Structures and Algorithms 3
1.1 A Philosophy of Data Structures 41.1.1 The Need for Data Structures 41.1.2 Costs and Benets 61.2 Abstract Data Types and Data Structures 81.3 Design Patterns 121.3.1 Flyweight 131.3.2 Visitor 141.3.3 Composite 151.3.4 Strategy 161.4 Problems, Algorithms, and Programs 171.5 Further Reading 191.6 Exercises 21
2 Mathematical Preliminaries 25
2.1 Sets and Relations 252.2 Miscellaneous Notation 292.3 Logarithms 312.4 Summations and Recurrences 33
2.5 Recursion 362.6 Mathematical Proof Techniques 392.6.1 Direct Proof 402.6.2 Proof by Contradiction 402.6.3 Proof by Mathematical Induction 412.7 Estimating 472.8 Further Reading 492.9 Exercises 50
3 Algorithm Analysis 57
3.1 Introduction 573.2 Best, Worst, and Average Cases 633.3 A Faster Computer, or a Faster Algorithm? 653.4 Asymptotic Analysis 673.4.1 Upper Bounds 683.4.2 Lower Bounds 703.4.3
Notation 713.4.4 Simplifying Rules 723.4.5 Classifying Functions 733.5 Calculating the Running Time for a Program 743.6 Analyzing Problems 793.7 Common Misunderstandings 813.8 Multiple Parameters 833.9 Space Bounds 843.10 Speeding Up Your Programs 863.11 Empirical Analysis 893.12 Further Reading 903.13 Exercises 913.14 Projects 95
II Fundamental Data Structures 97
4 Lists, Stacks, and Queues 99

Activity (4)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
fridaymoon liked this

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->