Introduction To Data Structures
Introduction To Data Structures
to
Data Structures
1
Introduction
Data structure affects the design of both
structural & functional aspects of a
program.
Program=algorithm + Data Structure
You know that a algorithm is a step by step
procedure to solve a particular function.
2
Definition
Data: Collection of raw facts.
Data structure: is a way to store, manage and
organize data in computer, so that it can used
efficiently.
Two ways of looking into Data Structure:
1. Mathematical/Logical/Abstract Models/Views
2. Implementation
3
Abstract Data Type (ADT)
ADT are entities that are definitions of data and
operations but do not have implementation details.
4
Classification of Data Structure
Datastructure are normally divided into
two broad categories:
◦ Primitive Data Structure
◦ Non-Primitive Data Structure
5
Classification of Data Structure
6
Primitive Data Structure
Data structures that are directly operated
upon the machine-level instructions are
known as primitive data structures.
Integer, Floating-point number, Character
constants, string constants, pointers etc, fall
in this category.
7
Primitive Data Structure
The most commonly used operation on data
structure are broadly categorized into
following types:
◦ Create
◦ Selection
◦ Updating
◦ Destroy or Delete
8
Non-Primitive Data Structure
TheData structures that are derived from the
primitive data structures are called Non-
primitive data structure.
The non-primitive data structures
emphasize on structuring of a group of
homogeneous (same type) or heterogeneous
(different type) data items.
9
Non-Primitive Data Structure
Linear Data structures:
◦ Linear Data structures are kind of data structure that has
homogeneous elements.
◦ The data structure in which elements are in a sequence
and form a liner series.
◦ Linear data structures are very easy to implement, since
the memory of the computer is also organized in a linear
fashion.
◦ Some commonly used linear data structures are Stack,
Queue and Linked Lists.
10
Non-Primitive Data Structure
Non-Linear Data structures:
◦ A Non-Linear Data structures is a data structure in which
data item is connected to several other data items.
◦ Non-Linear data structure may exhibit either a hierarchical
relationship or parent child relationship.
◦ The data elements are not arranged in a sequential
structure.
◦ The different non-linear data structures are trees and
graphs.
11
Non-Primitive Data Structure
The most commonly used operation on data
structure are broadly categorized into
following types:
◦ Traversal
◦ Insertion
◦ Selection
◦ Searching
◦ Sorting
◦ Merging
◦ Destroy or Delete
12
Different between them
A primitive data structure is generally a
basic structure that is usually built into the
language, such as an integer, a float.
14
Arrays
Simply, declaration of array is as follows:
int arr[10]
Where int specifies the data type or type of
elements arrays stores.
“arr” is the name of array & the number
specified inside the square brackets is the
number of elements an array can store, this is
also called sized or length of array.
15
Represent a Linear Array in memory
The elements of linear array are stored in
consecutive memory locations. It is shown
below:
16
Basic operations of Arrays
Some common operation performed
on array are:
◦ Traversing
◦ Searching
◦ Insertion
◦ Deletion
◦ Sorting
◦ Merging
17
Traversing Arrays
Traversing: It is used to access each data item exactly once so that it can be
processed.
E.g. We have linear array A as below:
1 2 3 4 5
10 20 30 40 50
Here we will start from beginning and will go till last element and during this
process we will access value of each element exactly once as below:
A [1] = 10
A [2] = 20
A [3] = 30
A [4] = 40
A [5] = 50
18
Insertion into Array
Insertion: It is used to add a new data item in the given collection of data items.
E.g.We have linear array A as below:
1 2 3 4 5
10 20 50 30 15
New element to be inserted is 100 and location for insertion is 3. So shift the
elements from 5th location to 3rd location downwards by 1 place.And then insert 100
at 3rd location. It is shown below:
19
Deletion from Array
Deletion: It is used to delete an existing data item from the given collection
of data items.
20
Searching in Arrays
Searching: It is used to find out the location of the data item if it exists in
the g given collection of data items.
E.g. We have linear array A as below:
1 2 3 4 5
15 50 35 20 25
Suppose item to be searched is 20.We will start from beginning and will
compare 20 with each element. This process will continue until element is
found or array is finished. Here:
1) Compare 20 with 15
20 ≠ 15, go to next element.
2) Compare 20 with 50
20 ≠ 50, go to next element.
3) Compare 20 with 35
20 ≠ 35, go to next element.
4) Compare 20 with 20
20 = 20, so 20 is found and its location is 4.
21
Linear
Search
22
Binary
Search
The binary search
algorithm can be used with
only sorted list of
elements.
Binary Search first divides
a large array into two
smaller sub-arrays and
then recursively operate
the sub-arrays.
Binary Search basically
reduces the search space to
half at each step
23
Binary
Search
24
Binary
Search
25
Searchin
g
26
Stack
27
Representation of Stack in Memory
Thestack can be implemented into two
ways:
28
Operation on Stacks:
Stack( ): It creates a new stack that is empty. It
needs no parameter and returns an empty
stack.
push(item): It adds a new item to the top of the
stack.
pop( ): It removes the top item from the stack.
peek( ): It returns the top item from the stack but
does not remove it.
isEmpty( ): It tests whether the stack is empty.
size( ): It returns the number of items on the
stack. 29
Stack
Conditions
30
PUSH Operation
The process of adding one element or item to the
stack is represented by an operation called as the
PUSH operation.
31
PUSH Operation:
The process of adding one element or item to the stack is
represented by an operation called as the PUSH operation.
The new element is added at the topmost position of the stack.
ALGORITHM:
PUSH (STACK, TOP, SIZE, ITEM)
STACK is the array with N elements. TOP is the pointer to the top of the
element of the array. ITEM to be inserted.
Step 1: if TOP = N-1 then [Check Overflow]
PRINT “ STACK is Full or Overflow”
Exit
[End if]
Step 2: TOP = TOP + 1 [Increment the TOP]
Step 3: STACK[TOP] = ITEM [Insert the ITEM]
Step 4: Return
32
POP Operation
The process of deleting one element or item
from the stack is represented by an operation
called as the POP operation.
When elements are removed continuously from a
stack, it shrinks at same end i.e., top
33
POP Operation
The process of deleting one element or item from the stack
is represented by an operation called as the POP
operation.
ALGORITHM: POP (STACK, TOP, ITEM)
STACK is the array with N elements. TOP is the pointer to the top of the
element of the array. ITEM to be inserted.
Step 1: if TOP = -1=NULL then [Check Underflow]
PRINT “ STACK is Empty or
Underflow”
Exit
[End if]
Step 2: ITEM = STACK[TOP] [copy the TOP
Step 3: TOP = TOP - 1 Element] [Decrement
Step 4: Return the TOP]
34
PEEK Operation
The process of returning the top item from
the stack but does not remove it called as the
POP operation.
ALGORITHM: PEEK (STACK, TOP)
STACK is the array with N elements. TOP is the
pointer to
the top of the element of the array.
Step 1: if TOP = NULL then [Check Underflow]
PRINT “ STACK is Empty or
Underflow”
Exit
[End if]
Step 2: Return (STACK[TOP] [Return the top
element of the stack] 35
Application of Stacks
36
Queue
A queue is an ordered collection of items where an
item is inserted at one end called the “rear” and
an existing item is removed at the other end, called
the “front”.
Queue is also called as FIFO list i.e. First-In First-
Out.
In the queue only two operations are allowed
enqueue and dequeue.
Enqueue means to insert an item into back of
the queue.
Dequeue means removing the front item.The people
standing in a railway reservation row are an
example of queue.
Prof. K. Adisesha 37 48
Queue
Thequeue can be implemented into two
ways:
◦ Using arrays (Static implementation)
◦ Using pointer (Dynamic
implementation)
49 38
Prof. K. Adisesha
Operation on Queues
Queue( ): It creates a new queue that is
empty.
enqueue(item): It adds a new item to the rear
of the queue.
dequeue( ): It removes the front item from
the queue.
isEmpty( ): It tests to see whether the queue
is empty.
size( ): It returns the number of items in the
queue.
39
Simple Queue
40
Queue Insertion Operation
(ENQUEUE):
ALGORITHM: ENQUEUE (QUEUE, REAR, FRONT, ITEM)
QUEUE is the array with N elements. FRONT is the pointer that
contains the location of the element to be deleted and REAR contains
the location of the inserted element. ITEM is the element to be
inserted.
41
Queue Insertion Operation
(ENQUEUE):
Step 2: if FRONT =NULL then [Check Whether Queue is empty]
FRONT = 0
REAR =0
else
REAR = REAR + 1 [Increment REAR Pointer]
Step 3: QUEUE[REAR] = ITEM
[Copy ITEM to REAR position]
Step 4: Return
42
Queue Deletion Operation
(DEQUEUE)
ALGORITHM: DEQUEUE (QUEUE, REAR, FRONT, ITEM)
QUEUE is the array with N elements. FRONT is the pointer that
contains the location of the element to be deleted and REAR contains
the location of the inserted element. ITEM is the element to be
inserted.
43
Queue Deletion Operation
(DEQUEUE)
Step 2: ITEM = QUEUE[FRONT]
44
Memory Representation of a
queue using array
Queue is represented in memory using linear
array.
Let QUEUE is a array, two pointer variables
called FRONT and REAR are maintained.
The pointer variable FRONT contains the location of the
element to be removed or deleted.
The pointer variable REAR contains location of the last
element inserted.
The condition FRONT = NULL indicates that queue is
empty.
The condition REAR = N-1 indicates that queue is full.
45
Memory Representation of a queue
using array
46
Application of Queue
Simulation
Multi-programming platform systems.
Different types of scheduling algorithms
Round robin technique algorithms
Printer server routines
47
Static Memory Allocation
Memory allocated during compile time is called static memory.
Example:
int main()
{
int arr[5]={1,2,3,4,5};
}
49
Problems Faced in Static
Memory Allocation
If you are allocating memory for an array during compile
time then you have to fix the size the time of declaration.
Size is fixed and user cannot increase or decrease the size of
the array at run time.
If the values stored by the user in the array at run time is less
than the size specified then there will be the wastage of
memory.
If the values stored by the user in the array at run time is
more than the size specified then the program may crash or
misbehave.
50
Better Solution
Dynamic memory allocation
◦ Know how much memory is needed after the program is run
◦ Example: ask the user to enter from keyboard
◦ Dynamically allocate only the amount of memory needed
◦ The process of allocating memory at the time of Execution
is called Dynamic Memory Allocation.
◦ Heap is the segment of memory where dynamic allocation
takes place.
◦ Heap is an area o memory where memory is allocated or de-
allocated without any order or randomly.
51
Memory Allocation Functions
malloc
◦ Allocates requested number of bytes and returns a pointer to the
first byte of the allocated space
Ptr=(cast-type*) malloc (byte-size);
calloc
◦ Allocates space for an array of elements, initializes them to zero
and then returns a pointer to the memory.
Ptr=(cast-type*)calloc(n,elem-size);
free
◦ Frees previously allocated space. free (ptr)
realloc
◦ Modifies the size of previously allocated space.
ptr=REALLOC(ptr,new size);
We will only do malloc and free
52