Introduction to Data Structures Prepared by: Eng. Ahmed & Mohamed Taha Copyright © Wondershare Software Agenda Data Structures and Algorithms. Characteristics of Data Structures. Abstract Data Types. General form of any Data structure Company Logo Copyright © Wondershare Software Data Structures A data structure is an arrangement of data in a computer's memory or even disk storage. An example of several common data structures are: arrays linked lists Queues Stacks binary trees hash tables. Algorithms, on the other hand, are used to manipulate the data contained in these data structures such as searching and sorting algorithms. Company Logo Copyright © Wondershare Software Algorithms Many algorithms apply directly to a specific data structures. When working with certain data structures you need to know how to insert new data, search for a specified item, and deleting a specific item. Commonly used algorithms are useful for: Searching for a particular data item (or record). Sorting the data. There are many ways to sort data. Simple sorting, Advanced sorting Iterating through all the items in a data structure. (Visiting each item in turn so as to display it or perform some other action on these items) Company Logo Copyright © Wondershare Software Characteristics of Data Structures Data Structure Advantages Disadvantages Quick inserts Fast access if index known Slow search Slow deletes Fixed size Faster search than unsorted array Slow inserts Slow deletes Fixed size Stack Last-in, first-out LIFO access Slow access to other items Queue First-in, first-out FIFO access Slow access to other items Quick inserts Quick deletes Slow search 1 Array 2 Ordered Array 3 4 5 Linked List 6 Binary Tree Company Logo Quick search Quick inserts Quick deletes (If the tree remains balanced) Deletion algorithm is complex Copyright © Wondershare Software Characteristics of Data Structures Data Structure 7 Red-Black Tree 8 2-3-4 Tree 9 Hash Table 10 Advantages Quick search Quick inserts Quick deletes (Tree always remains balanced) Quick search Quick inserts Quick deletes (Tree always remains balanced) (Similar trees good for disk storage) Very fast access if key is known Quick inserts Heap Quick inserts Quick deletes Access to largest item Graph Best models real-world situations 11 Company Logo Cont. Disadvantages Complex to implement Complex to implement Slow deletes Access slow if key is not known Inefficient memory usage Slow access to other items Some algorithms are slow and very complex Copyright © Wondershare Software A red-black Tree A red-black tree is a binary search tree where each node has a color attribute, the value of which is either(red or black). In addition to the ordinary requirements imposed on binary search trees, the following additional requirements apply to red-black trees: 1.A node is either red or black. 2.The root is black. (This rule is sometimes omitted from other definitions. Since the root can always be changed from red to black but not necessarily vice-versa this rule has little effect on analysis.) 3.All leaves are black. 4.Both children of every red node are black. 5.Every simple path from a given node to any of its descendant leaves contains the same number of black nodes. Company Logo Copyright © Wondershare Software A red-black Tree Example Company Logo Cont. Copyright © Wondershare Software Abstract Data Types (ADT) An Abstract Data Type (ADT) is more a way of looking at a data structure: focusing on what it does and ignoring how it does its job. A stack or a queue is an example of an ADT. It is important to understand that both stacks and queues can be implemented using an array. It is also possible to implement stacks and queues using a linked list. This demonstrates the "abstract" nature of stacks and queues: how they can be considered separately from their implementation. To best describe the term Abstract Data Type, it is best to break the term down into "data type" and then "abstract". data type: a data item with certain characteristics and the permissible operations on that data. An “int”, for example, can contain any whole-number value. It can also be used with the operators +, -, *, and /. understanding the type means understanding what operations can be performed on it. Abstract: The word abstract in our context stands for "considered apart from the detailed specifications or implementation“. Consider for example the stack class. The end user knows that push() and pop() (amoung other similar methods) exist and how they work. The user doesn't and shouldn't have to know how push() and pop() work, or whether data is stored in an array, a linked list, or some other data structure like a tree. Company Logo Copyright © Wondershare Software General form of any Data structure Data structure operations Insert item function Company Logo Delete item function Search for an item function Copyright © Wondershare Software Thank you ! Copyright © Wondershare Software