Mais conteúdo relacionado
Semelhante a Data Structure Basics (20)
Mais de Shakila Mahjabin (15)
Data Structure Basics
- 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.