1 / 17

Data Structures Michael J. Watts mike.watts.nz

Understand key data structures - arrays, matrices, structures, stacks, queues, trees - and their applications in programming. Learn about their efficiency, flexibility, and usage based on problem requirements. Explore search methods and operations for various data types.

amcdowell
Télécharger la présentation

Data Structures Michael J. Watts mike.watts.nz

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures Michael J. Watts http://mike.watts.net.nz

  2. Lecture Outline • Arrays • Matrices • Structures • Stacks • Queues • Trees

  3. Introduction • Selection of an appropriate data structure is an important part of programming • Efficiency • Flexibility • Choice depends on problem • Rate of new data acquisition / insertion • Type of data being stored • Desired method of data access

  4. Arrays • Basic data structure for most programming languages • Collection of data values • Usually a single data type • cf MATLAB cell arrays • Contents accessed by index numbers • Problems with searching for specific elements • Good for fixed numbers of items

  5. Matrices • Array of arrays • Basis of MATLAB • One dimensional matrices are arrays • Row / column vectors • Can be > 2D • Accessed via row / column indices • Same problems with searching as arrays • Makes certain mathematical operations easier

  6. Structures • Collection of named pieces of data • Multiple data types within a structure • Elements within a structure are called fields • Contents accessed by field name • Good for grouping related items together

  7. Stacks • Like a stack of plates • Oldest items are at the bottom • Newest items are at the top • New items are 'pushed' onto the top of the stack • Retrieved items are 'popped' off of the top of the stack • First in, last out data structure

  8. Stacks • Often used to provide temporary storage of data values • Can't be searched • Have to pop each value out to find the one you're looking for • Simple to implement • Can be used for evaluating expressions

  9. Queues • Like a queue at the supermarket • Sequential data structure • Oldest items are at the front • Newest items are at the back • Elements are 'enqueued' at the end • Elements are 'dequeued' at the front • First in, first out data structure

  10. Queues • Used to control access to finite resources • Petrol pumps, checkouts, printers • Sequential access only • Unordered • Problems with searching

  11. Trees • Way of storing data values in order • Two dimensional structure • Collection of nodes and edges • Nodes are data items • Edges connect nodes • Position of an item in the structure depends on the value of a key • Many types of tree in existence

  12. Trees • Navigate by the vales of the nodes • Much faster than sequential search • Don't need to examine every item • Adding a level to the tree adds just one more comparison • A level can have many items • Search speed scales as to the log of N • N is the number of items in the tree

  13. B-Trees • Binary trees • Each node has zero or more subtrees • Left and right • Node without a subtree is a leaf • First node is the root • Values in left subtree are smaller • Values in right subtree are greater

  14. B-Trees • Allow for efficient searches • Search for value of key • Often used in indexing • Databases, file systems • Can degenerate • Sequential values • Becomes a list • Inefficient

  15. AVL Trees • Adel'son-Vel'skii and Landis trees • Balanced binary trees • Height between left and right subtree differ by at most one • Height measured between bottom-most nodes • Height difference maintained by rotations • Single / double rotate left / right

  16. AVL Trees • Don't become degenerate • Always efficient searching • Close to the theoretical maximum • Rotations can be expensive • Frequent insertions / deletions • Other optimisations for in-order iterations

  17. Summary • Selection of a data structure is problem dependent • Arrays and structures are built into most programming languages • Stacks are often used for temporary storage • Queues control access to a resource • Trees are efficient for retrieval • B-Trees can degenerate • AVL trees are balanced

More Related