or
Sign in to turn on 1-Click ordering.
or
Amazon Prime Free Trial required. Sign up when you check out. Learn More
Sell Back Your Copy
For a $1.60 Gift Card
Trade in
More Buying Choices
Have one to sell? Sell yours here
Data Structures and Algorithm Analysis in C (2nd Edition)
 
See larger image
 
Tell the Publisher!
I'd like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Data Structures and Algorithm Analysis in C (2nd Edition) [Paperback]

Mark A. Weiss (Author)
3.3 out of 5 stars  See all reviews (27 customer reviews)

List Price: $142.00
Price: $101.69 & this item ships for FREE with Super Saver Shipping. Details
You Save: $40.31 (28%)
  Special Offers Available
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Only 3 left in stock--order soon (more on the way).
Want it delivered Friday, February 3? Choose One-Day Shipping at checkout. Details
Textbook Student FREE Two-Day Shipping for students on millions of items. Learn more

Formats

Amazon Price New from Used from
Hardcover --  
Paperback $101.69  
Sell Back Your Copy for $1.60
Whether you buy it used on Amazon for $2.93 or somewhere else, you can sell it back through our Book Trade-In Program at the current price of $1.60.
Used Price$2.93
Trade-in Price$1.60
Price after
Trade-in
$1.33

Book Description

0201498405 978-0201498400 September 19, 1996 2
Mark Allen Weiss' successful book provides a modern approach to algorithms and data structures using the C programming language. The book's conceptual presentation focuses on ADTs and the analysis of algorithms for efficiency, with a particular concentration on performance and running time. The second edition contains a new chapter that examines advanced data structures such as red black trees, top down splay trees, treaps, k-d trees, and pairing heaps among others. All code examples now conform to ANSI C and coverage of the formal proofs underpinning several key data structures has been strengthened.

Special Offers and Product Promotions

  • Buy $50 in qualifying physical textbooks, get $5 in Amazon MP3 Credit. Here's how (restrictions apply)

Frequently Bought Together

Data Structures and Algorithm Analysis in C (2nd Edition) + Computer Networking: A Top-Down Approach (5th Edition) + Operating System Concepts
Price For All Three: $322.62

Show availability and shipping details

Buy the selected items together
  • In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Computer Networking: A Top-Down Approach (5th Edition) $98.49

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Operating System Concepts $122.44

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details



Editorial Reviews

From the Inside Flap

Purpose/Goals

This book describes data structures, methods of organizing large amounts of data, and algorithm analysis, the estimation of the running time of algorithms. As computers become faster and faster, the need for programs that can handle large amounts of input becomes more acute. Paradoxically, this requires more careful attention to efficiency, since inefficiencies in programs become most obvious when input sizes are large. By analyzing an algorithm before it is actually coded, students can decide if a particular solution will be feasible. For example, in this text students look at specific problems and see how careful implementations can reduce the time constraint for large amounts of data from 16 years to less than a second. Therefore, no algorithm or data structure is presented without an explanation of its running time. In some cases, minute details that affect the running time of the implementation are explored.

Once a solution method is determined, a program must still be written. As computers have become more powerful, the problems they must solve have become larger and more complex, requiring development of more intricate programs. The goal of this text is to teach students good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amount of efficiency.

This book is suitable for either an advanced data structures (CS7) course or a first-year graduate course in algorithm analysis. Students should have some knowledge of intermediate programming, including such topics as pointers and recursion, and some background in discrete math. Approach

I believe it is important for students to learn how to program for themselves, not how to copy programs from a book. On the other hand, it is virtually impossible to discuss realistic programming issues without including sample code. For this reason, the book usually provides about one-half to three-quarters of an implementation, and the student is encouraged to supply the rest. Chapter 12, which is new to this edition, discusses additional data structures with an emphasis on implementation details.

The algorithms in this book are presented in ANSI C, which, despite some flaws, is arguably the most popular systems programming language. The use of C instead of Pascal allows the use of dynamically allocated arrays (see, for instance, rehashing in Chapter 5). It also produces simplified code in several places, usually because the and (&&) operations is short-circuited.

Most criticisms of C center on the fact that it is easy to write code that is barely readable. Some of the more standard tricks, such as the simultaneous assignment and testing against 0 via

if (x=y)

are generally not used in the text, since the loss of clarity is compensated by only a few keystrokes and no increased speed. I believe that this books demonstrates that unreadable code can be avoided by exercising reasonable care.

Overview

Chapter 1 contains review material on discrete math and recursion. I believe the only way to be comfortable with recursion is to see good uses over and over. Therefore, recursion is prevalent in this text, with examples in every chapter except Chapter 5.

Chapter 2 deals with algorithm analysis. This chapter explains asymptotic analysis and its major weaknesses. Many examples are provided, including an in-depth explanation of logarithms running time. Simple recursive programs are analyzed by intuitively converting them into iterative programs. More complicated divide-and-conquer programs are introduced, but some of the analysis (solving recurrence relations) is implicitly delayed until Chapter 7, where it is performed in detail.

Chapter 3 covers lists, stacks, and queues. The emphasis here is on coding these data structures using ADTs, fast implementation of these data structures, and an exposition of some of their uses. There are almost no programs (just routines), but the exercises contain plenty of ideas for programming assignments.

Chapter 4 covers trees, with an emphasis on search trees, including external search trees (B-trees). The UNIX file system and expression trees are used as examples. AVL trees and splay trees are introduced but not analyzed. Seventy-five percent of the code is written, leaving similar cases to be completed by the student. More careful treatment of search tree implementation details is found in Chapter 12. Additional coverage of trees, such as file compression and game trees, is deferred until Chapter 10. Data structures for an external medium are considered as the final topic in several chapters.

Chapter 5 is relatively short chapter concerning hash tables. Some analysis is performed, and extendible hashing is covered at the end of the chapter.

Chapter 6 is about priority queues. Binary heaps are covered, and there is additional material on some of the theoretically interesting implementations of priority queues. The Fibonacci heap is discussed in Chapter 11, and the pairing heap is discussed in Chapter 12.

Chapter 7 covers sorting. It is very specific with respect to coding details and analysis. All the important general-purpose sorting algorithms are covered and compared. Four algorithms are analyzed in detail: insertion sort, Shellsort, heapsort, and quicksort. The analysis of the average-case running time of heapsort is new to this edition. External sorting is covered at the end of the chapter.

Chapter 8 discusses the disjoint set algorithm with proof of the running time. This is a short and specific chapter that can be skipped if Kruskal's algorithm is not discussed.

Chapter 9 covers graph algorithms. Algorithms on graphs are interesting, not only because they frequently occur in practice but also because their running time is so heavily dependent on the proper use of data structures. Virtually all of the standard algorithms are presented along with appropriate data structures, pseudocode, and analysis of running time. To place these problems in a proper context, a short discussion on complexity theory (including NP-completeness and undecidability) is provided.

Chapter 10 covers algorithm design by examining common problem-solving techniques. This chapter is heavily fortified with examples. Pseudocode is used in these later chapters so that the student's appreciation of an example algorithm is not obscured by implementation details.

Chapter 11 deals with amortized analysis. Three data structures from Chapters 4 and 6 and the Fibonacci heap, introduced in this chapter, are analyzed.

Chapter 12 is new to this edition. It covers search tree algorithms, the k-d tree, and the pairing heap. This chapter departs from the rest of the text by providing complete and careful implementations for the search trees and pairing heap. The material is structured so that the instructor can integrate sections into discussions from other chapters. For example, the top-down red black tree in Chapter 12 can be discussed under AVL trees (in Chapter 4).

Chapters 1-9 provide enough material for most one-semester data structures courses. If time permits, then Chapter 10 can be covered. A graduate course on algorithm analysis could cover Chapters 7-11. The advanced data structures analyzed in Chapter 11 can easily be referred to in the earlier chapters. The discussion of NP-completeness in Chapter 9 is far too brief to be used in such a course. Garey and Johnson's book on NP-completeness can be used to augment this text.

Exercises

Exercises, provided at the end of each chapter, match the order in which material is presented. The last exercises may address the chapter as a whole rather than a specific section. Difficult exercises are marked with an asterisk, and more challenging exercises have two asterisks.

A solutions manual containing solutions to almost all the exercises is available to instructors from the Addison-Wesley Publishing Company.

References

References are placed at the end of each chapter. Generally the references either are historical, representing the original source of the material, or they represent extensions and improvements to the results given in the text. Some references represent solutions to exercises.

Code Availability

The example program code in this book is available via anonymous ftp at aw. It is also accessible through the World Wide Web; the URL is aw/cseng/authors/weiss/dsaac2/dsaac2e.sup.html (follow the links from there). The exact location of this material may change.

Acknowledgments

Many, many people have helped me in the preparation of books in this series. Some are listed in other versions of the book; thanks to all.

For this edition, I would like to thank my editors at Addison-Wesley, Carter Shanklin and Susan Hartman. Teri Hyde did another wonderful job with the production, and Matthew Harris and his staff at Publication Services did their usual fine work putting the final pieces together.

M.A.W.
Miami, Florida
July, 1996

0201498405P04062001

From the Back Cover

In this second edition of his best-selling book, Data Structures and Algorithm Analysis in C, Mark Allen Weiss, continues to refine and enhance his innovative approach to algorithms and data structures. Using a C implementation, he highlights conceptual topics, focusing on ADTs and the analysis of algorithms for efficiency as well as performance and running time. Dr. Weiss also distinguishes Data Structures and Algorithm Analysis in C with the extensive use of figures and examples showing the successive stages of an algorithm, his engaging writing style, and a logical organization of topics.

Features
  • Includes a chapter on algorithm and design techniques that covers greedy algorithms, divide and conquer algorithms, dynamic programming, randomized algorithms, and backtracking

  • Presents current topics and newer data structures such as Fibonacci heaps, skew heaps, binomial queues, skip lists, and splay trees

  • Contains a chapter on amortized analysis that examines the advanced data structures presented earlier in the book

  • Provides a new chapter on advanced data structures and their implementation covering red black trees, top down splay trees, treaps, k-d trees, pairing heaps, and more

  • Incorporates new results on the average case analysis of heapsort

  • Offers source code from example programs via anonymous FTP


0201498405B04062001

Product Details

  • Paperback: 600 pages
  • Publisher: Addison Wesley; 2 edition (September 19, 1996)
  • Language: English
  • ISBN-10: 0201498405
  • ISBN-13: 978-0201498400
  • Product Dimensions: 9.4 x 7.5 x 1.2 inches
  • Shipping Weight: 2.4 pounds (View shipping rates and policies)
  • Average Customer Review: 3.3 out of 5 stars  See all reviews (27 customer reviews)
  • Amazon Best Sellers Rank: #420,129 in Books (See Top 100 in Books)

 

Customer Reviews

27 Reviews
5 star:
 (8)
4 star:
 (9)
3 star:
 (1)
2 star:
 (2)
1 star:
 (7)
 
 
 
 
 
Average Customer Review
3.3 out of 5 stars (27 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

20 of 22 people found the following review helpful:
4.0 out of 5 stars Read description: for ADVANCED data structures course, January 18, 2005
By 
A. Miller (Arlington, Virginia United States) - See all my reviews
(REAL NAME)   
Many people on here have complained that this book goes way over the head of students not already familiar with some C++ and data structures. To these comments, I refer you to the product description (or editorial review, whichever) that specifically says this is an advanced text. I apologize to those whose professors ordered this book for intro data structures--I can understand why this book would go past the scope of that class. However, if you know any Object Oriented programming (Java or C++ preferably) and know some basic algorithms and structures (matrices, sorts, recursion, trees, queues, etc.) this book will take you far. I don't even mean that you must be proficient in these structures, just have some basic understanding of how they work. For example, you should know what a tree is (root, leaves, implemented with pointers and nodes) and book will tell you how to use trees (B-Trees, Binary trees, etc.). By the point you are using this book, hopefully you'll have taken the math and programming classes needed to comprehend this text. Otherwise, do not blame the text for being targeted to an advanced audience.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


31 of 40 people found the following review helpful:
1.0 out of 5 stars Poorly Written, No Answers to Exercises, Avoid purchase., April 17, 2005
By 
G. Bartz (University of California, Santa Barbara) - See all my reviews
(REAL NAME)   
Another drab computer science book written by someone who likes to complicate the obvious and oversimplify the complicated.
It is obviously geared toward dry mathematical types, and if you're one of those it might possibly be partially stimulating. The mathematical notation is unfortunately quite poor, many letters (which seem to represent constants and sometimes variables?) are ambiguously defined. Not to mention how half assed the "proofs" are. My linear algebra and differential equations teacher would roll over in her proverbial grave.

The code examples are halfway decent, however using one letter variable names is something a beginner quickly learns to stop doing. Why does this guy do it?
The one thing that I like is his use of line up curley braces.
Requiring readers to visit some website to obtain portions of missing code defeats the purpose of writing a book.
Why don't I just read a bunch of webpages instead of buying this flavorless thing. Code "snipits" are another big mistake, they're only understood if their context is explained well, which this shabby author cannot do. He seems to assume we have some clairvoyant abilities. A hint of color might at least keep me awake, but I guess that would have required putting some thought into the book's layout.

The hash table chapter is a wonderful example of how this author is a detached weirdo who can't put himself in the place of his readers. Saying "in the above example" in reference to an example that was FOUR pages ago is thoroughly idiotic and unnecessarily confusing. Several "examples" appeared after the one he referred to. Naming the page number would only take a few more letters i.e. "in the above example(p.54)"
And saying "using the same hash function" after showing us 3 different hash functions has the same perplexing effect. How about "again using h(x) = x%10," it would use less ink and make more sense.

The true reason I hate this book though, is that its exercises have no answers, not even to the odd questions or just some selected questions. Nothing.
Thus, the exercises are completely useless.
In order to prepare for my exam I've had to check out other books because this one doesn't cut it. I even found a much older edition of this book and by its similarity it's clear he's just recycling it for financial gain. Again Exercises and no solutions. How do I know if I'm doing them correctly?! As with physical exercise, exerting yourself the wrong way can be quite detrimental!
This author needs to take a communication 101 class or read some of Deitel & Deitel's books. Avoid purchasing this book unless you have to!
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


14 of 17 people found the following review helpful:
1.0 out of 5 stars ... poor examples, November 10, 2002
By A Customer
This is my second time taking this class. The only reason, and I do mean the only reason why I have to retake this class is because many of the examples in the book are confusing. It just dawned on me today when I couldn't understand the Shell sort on page 256 - this is a simple concept. I had to reference another book in order to understand it and as it turns out, it was a simple concept. A second example of the confusion is the Huffman coding sequence on page 398 - I am having to go onto the internet because I just plain don't understand the example. In my personal opinion I do not feel the book is thorough enough . . . it needs to be written more simply with better diagrams and examples.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews











Only search this product's reviews



What Other Items Do Customers Buy After Viewing This Item?


Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 

Your tags: Add your first tag
 

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
Search all Amazon discussions
   
Related forums



So You'd Like to...


Create a guide


Look for Similar Items by Category


Look for Similar Items by Subject