Upcoming SlideShare
×

# Data Structure Basics

761 views
601 views

Published on

CSC-391 course material. Data structure and algorithm basic.

Published in: Education, Technology
7 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
761
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
58
0
Likes
7
Embeds 0
No embeds

No notes for slide

### Data Structure Basics

1. 1. Data Structures and Algorithms Lec-1 CSC 391
2. 2. 2 Data Structures and Algorithms Data Structure ©SMT, Faculty, CSE, IUBAT In computer science, a data structure is a particular way of storing and organizing data in a computer’s memory so that it can be used efficiently. Data may be organized in many different ways. The logical or mathematical model of a particular organization of data is called a data structure.
3. 3. 3 Data Structures and Algorithms Types Categories of Data Structure: The data structure can be classified in to major types: • Linear Data Structure • Non-linear Data Structure 1. Linear Data Structure: A data structure is said to be linear if its elements form any sequence. There are basically two ways of representing such linear structure in memory. a) One way is to have the linear relationships between the elements represented by means of sequential memory location. These linear structures are called arrays. b) The other way is to have the linear relationship between the elements represented by means of pointers or links. These linear structures are called linked lists. ©SMT, Faculty, CSE, IUBAT
4. 4. 4 Data Structures and Algorithms The common examples of linear data structure are- Arrays, Queues, Stacks, Linked lists 2. Non-linear Data Structure: This structure is mainly used to represent data containing a hierarchical relationship between elements. e.g. graphs, family trees and table of contents. Types ©SMT, Faculty, CSE, IUBAT
5. 5. 5 Data Structures and Algorithms Memory Allocation ©SMT, Faculty, CSE, IUBAT Memory allocation can be classified as either  Contiguous  Linked  Indexed Prototypical examples:  Contiguous allocation: arrays  Linked allocation: linked lists
6. 6. 6 Data Structures and Algorithms Contiguous Allocation ©SMT, Faculty, CSE, IUBAT An array stores n objects in a single contiguous space of memory Unfortunately, if more memory is required, a request for new memory usually requires copying all information into the new memory  In general, you cannot request for the operating system to allocate to you the next n memory locations
7. 7. 7 Data Structures and Algorithms Linked Allocation ©SMT, Faculty, CSE, IUBAT Linked storage such as a linked list associates two pieces of data with each item being stored:  The object itself, and  A reference to the next item  In C++ that reference is the address of the next node
8. 8. 8 Data Structures and Algorithms Linked Allocation ©SMT, Faculty, CSE, IUBAT This is a class describing such a node template <typename Type> class Node { private: Type element; Node *next_node; public: // ... };
9. 9. 9 Data Structures and Algorithms Linked Allocation ©SMT, Faculty, CSE, IUBAT The operations on this node must include:  Constructing a new node  Accessing (retrieving) the value  Accessing the next pointer Node( const Type& = Type(), Node* = nullptr ); Type retrieve() const; Node *next() const; Pointing to nothing has been represented as: C NULL Java/C# null C++ (old) 0 C++ (new) nullptr Symbolically Ø
10. 10. 10 Data Structures and Algorithms Linked Allocation ©SMT, Faculty, CSE, IUBAT For a linked list, however, we also require an object which links to the first object The actual linked list class must store two pointers  A head and tail: Node *head; Node *tail; Optionally, we can also keep a count int count; The next_node of the last node is assigned nullptr
11. 11. 11 Data Structures and Algorithms Linked Allocation ©SMT, Faculty, CSE, IUBAT The class structure would be: template <typename Type> class List { private: Node<Type> *head; Node<Type> *tail; int count; public: // constructor(s)... // accessor(s)... // mutator(s)... };
12. 12. 12 Data Structures and Algorithms Indexed Allocation ©SMT, Faculty, CSE, IUBAT With indexed allocation, an array of pointers (possibly NULL) link to a sequence of allocated memory locations Used in the C++ standard template library Computer engineering students will see indexed allocation in their operating systems course
13. 13. 13 Data Structures and Algorithms Indexed Allocation ©SMT, Faculty, CSE, IUBAT Matrices can be implemented using indexed allocation: 1 2 3 4 5 6      
14. 14. 14 Data Structures and Algorithms Indexed Allocation ©SMT, Faculty, CSE, IUBAT Matrices can be implemented using indexed allocation  Most implementations of matrices (or higher-dimensional arrays) use indices pointing into a single contiguous block of memory Row-major order Column-major order C, Python Matlab, Fortran 1 2 3 4 5 6      
15. 15. 15 Data Structures and Algorithms Data Structure Formats ©SMT, Faculty, CSE, IUBAT We will look at some variations or hybrids of these memory allocations including:  Trees  Graphs  Array  Linked List  Stack  Queue
16. 16. 16 Data Structures and Algorithms Trees ©SMT, Faculty, CSE, IUBAT The linked list can be used to store linearly ordered data  What if we have multiple next pointers? A rooted tree (weeks 4-6) is similar to a linked list but with multiple next pointers
17. 17. 17 Data Structures and Algorithms Trees ©SMT, Faculty, CSE, IUBAT Data frequently contain a hierarchical relationship between various elements. The data structure which reflects this relationship is called a rooted tree graph or, simply, a tree. A tree is a variation on a linked list:  Each node points to an arbitrary number of subsequent nodes  Useful for storing hierarchical data 2.2.2.2
18. 18. 18 Data Structures and Algorithms Graphs ©SMT, Faculty, CSE, IUBAT Suppose we allow arbitrary relations between any two objects in a container  Given n objects, there are n2 – n possible relations  If we allow symmetry, this reduces to  For example, consider the network 2 2 n n 2.2.2.2 Data sometimes contains a relationship between pairs of elements which is not necessarily hierarchical in nature, e.g. an airline flights only between the cities connected by lines. This data structure is called Graph.
19. 19. 19 Data Structures and Algorithms Arrays ©SMT, Faculty, CSE, IUBAT 2.2.2.2 The simplest type of data structure is a linear (or one dimensional) array. A list of a finite number n of similar data referenced respectively by a set of n consecutive numbers, usually 1, 2, 3 . . . . . . . n. if we choose the name A for the array, then the elements of A are denoted by subscript notation A 1 , A 2 , A 3 . . . . A n or by the parenthesis notation A (1), A (2), A (3) . . . . . . A (n) or by the bracket notation A [1], A [2], A [3] . . . . . . A [n] Example: A linear array A[8] consisting of numbers is pictured in following figure
20. 20. 20 Data Structures and Algorithms Linked List ©SMT, Faculty, CSE, IUBAT A linked list, or one way list is a linear collection of data elements, called nodes, where the linear order is given by means of pointers. Each node is divided into two parts: The first part contains the information of the element/node The second part contains the address of the next node (link /next pointer field) in the list. There is a special pointer Start/List contains the address of first node in the list. If this special pointer contains null, means that List is empty.
21. 21. 21 Data Structures and Algorithms Array of Linked Lists ©SMT, Faculty, CSE, IUBAT Suppose we allow arbitrary relations between any two objects in a container  Alternatively, we could use a hybrid: an array of linked lists A B C D E F G H I J K L 2.2.2.2
22. 22. 22 Data Structures and Algorithms Queue and Stack ©SMT, Faculty, CSE, IUBAT Queue: A queue, also called FIFO system, is a linear list in which deletions can take place only at one end of the list, the Font of the list and insertion can take place only at the other end Rear. Stack: It is an ordered group of homogeneous items of elements. Elements are added to and removed from the top of the stack (the most recently added items are at the top of the stack). The last element to be added is the first to be removed (LIFO: Last In, First Out).
23. 23. 23 Data Structures and Algorithms Data Structures Operations ©SMT, Faculty, CSE, IUBAT The data appearing in our data structures are processed by means of certain operations. In fact, the particular data structure that one chooses for a given situation depends largely in the frequency with which specific operations are performed. The following four operations play a major role in this text:  Traversing: accessing each record/node exactly once so that certain items in the record may be processed. (This accessing and processing is sometimes called “visiting” the record.)
24. 24. 24 Data Structures and Algorithms Data Structures Operations ©SMT, Faculty, CSE, IUBAT  Searching: Finding the location of the desired node with a given key value, or finding the locations of all such nodes which satisfy one or more conditions.  Inserting: Adding a new node/record to the structure.  Deleting: Removing a node/record from the structure.