SlideShare a Scribd company logo
1 of 81
Topics
• Introduction
• Definitions
• Classification of data structures
• Arrays and linked lists
• Abstract data types [ADT]
• The list ADT
• Array-based implementation
• Linked list implementation
• Cursor-based implementation
• Doubly linked lists
8 October 2022 1
Data Structure [Wikipedia]
• Data structure is a particular way of storing and organizing data in a
computer so that it can be used efficiently.
• Different kinds of data structures are suited to different kinds of
applications.
• Storing and retrieving can be carried out on data stored in both main
memory and in secondary memory.
8 October 2022 2
Merriam-Webster's Definition
• Way in which data are stored for efficient search and retrieval.
• The simplest data structure is the one-dimensional (linear) array.
• Data items stored non-consecutively in memory may be linked by
pointers.
• Many algorithms have been developed for storing data efficiently.
8 October 2022 3
Algorithms [Wikipedia]
• An algorithm is a step-by-step procedure for calculations.
• An algorithm is an effective method expressed as a finite list of well-
defined instructions for calculating a function.
• The transition from one state to the next is not necessarily
deterministic; some algorithms incorporate random input.
8 October 2022 4
Merriam-Webster's Definition
• Procedure that produces the answer to a question or the solution to a
problem in a finite number of steps.
• An algorithm that produces a yes or no answer is called a decision
procedure; one that leads to a solution is a computation procedure.
• Example: a mathematical formula and the instructions in a computer
program
8 October 2022 5
Data Structure Classification
• Primitive / Non-primitive
• Basic data structures available / derived from primitive data structures
• Homogeneous / Heterogeneous
• Elements are of the same type / different types
• Static / Dynamic
• Memory is allocated at the time of compilation / run-time
• Linear / Non-linear
• Maintain a linear relationship between element
8 October 2022 6
ADT - General Concept
• Problem solving with a computer means processing data
• To process data, we need to define the data type and the operation to
be performed on the data
• The definition of the data type and the definition of the operation to be
applied to the data is part of the idea behind an abstract data type
(ADT)
8 October 2022 7
ADT - General Concept
• The user of an ADT needs only to know that a set of operations are
available for the data type, but does not need to know how they are
applied
• Several simple adt’s, such as integer, real, character, pointer and so
on, have been implemented and are available for use in most
languages
8 October 2022 8
Data Types
• A data type is characterized by:
• A set of values
• A data representation, which is common to all these values, and
• A set of operations, which can be applied uniformly to all these values
8 October 2022 9
Primitive Data Types
• Languages like ‘C’ provides the following primitive data types:
• boolean
• char, byte, int
• float, double
• Each primitive type has:
• A set of values
• A data representation
• A set of operations
• These are “set in stone”.
8 October 2022 10
ADT Definition [Wikipedia]
• In computer science, an abstract data type (ADT) is a mathematical
model for a certain class of data structures that have similar behavior.
• An abstract data type is defined indirectly, only by the operations that
may be performed on it and by mathematical constraints on the effects
(and possibly cost) of those operations.
8 October 2022 11
ADT Definition [Wikipedia]
• An ADT may be implemented by specific data types or data structures,
in many ways and in many programming languages; or described in a
formal specification language.
• Example, an abstract stack could be defined by three operations:
• Push, that inserts some data item onto the structure,
• Pop, that extracts an item from it, and
• Peek, that allows data on top of the structure to be examined without removal.
8 October 2022 12
Definition from techforum4you
• Abstract data types or adt’s are a mathematical specification of a set
of data and the set of operations that can be performed on the data.
• They are abstract in the sense that the focus is on the definitions and
the various operations with their arguments.
• The actual implementation is not defined, and does not affect the use
of the adt.
8 October 2022 13
ADT in Simple Words
• Definition:
• Is a set of operation
• Mathematical abstraction
• No implementation detail
• Example:
• Lists, sets, graphs, stacks are examples of ADT along with
their operations
8 October 2022 14
Why ADT?
• Modularity
• divide program into small functions
• easy to debug and maintain
• easy to modify
• group work
• Reuse
• do some operations only once
• Easy to change the implementation
• transparent to the program
8 October 2022 15
Implementing an ADT
• To implement an ADT, you need to choose:
• A data representation
• must be able to represent all necessary values of the ADT
• should be private
• An algorithm for each of the necessary operation:
• must be consistent with the chosen representation
• all auxiliary (helper) operations that are not in the contract should be private
• Remember: Once other people are using it
• It’s easy to add functionality
8 October 2022 16
The List ADT
• The List is an
• Ordered sequence of data items called elements
• A1, A2, A3, …,AN is a list of size N
• size of an empty list is 0
• Ai+1 succeeds Ai
• Ai-1 preceeds Ai
• Position of Ai is i
• First element is A1 called “head”
• Last element is AN called “tail”
8 October 2022 17
Operations on Lists
• Make Empty
• Print List
• Find
• Find Kth
• Insert
• Delete
• Next
• Previous
8 October 2022 18
List – An Example
• The elements of a list are 34, 12, 52, 16, 12
• Find (52) -> 3
• Insert (20, 4) -> 34, 12, 52, 20, 16, 12
• Delete (52) -> 34, 12, 20, 16, 12
• Find Kth (3) -> 20
8 October 2022 19
List - Implementation
• Lists can be implemented using:
• Arrays
• Linked List
• Cursor [Linked List using Arrays]
8 October 2022 20
Arrays
• Array is a static data structure that represents a collection of fixed
number of homogeneous data items or
• A fixed-size indexed sequence of elements, all of the same type.
• The individual elements are typically stored in consecutive memory
locations.
• The length of the array is determined when the array is created, and
cannot be changed.
8 October 2022 21
Arrays
• Any component of the array can be inspected or updated by using its
index.
• This is an efficient operation
• O(1) = constant time
• The array indices may be integers (C, Java) or other discrete data types
(Pascal, Ada).
• The lower bound may be zero (C, Java), one (Fortran), or chosen by the
programmer (Pascal, Ada)
8 October 2022 22
Different Types of Arrays
• One-dimensional array: only one index is used
• Multi-dimensional array: array involving more than one index
• Static array: the compiler determines how memory will be allocated for the
array
• Dynamic array: memory allocation takes place during execution
8 October 2022 23
One Dimensional Static Array
• Syntax:
Element type array name [capacity];
Element type array name [capacity] = { initializer_list };
• Example in C++:
int b [5];
int b [5] = {19, 68, 12, 45, 72};
8 October 2022 24
Array Output Function
void display(int array[],int num_values)
{
for (int i = 0; i<num_values; i++)
cout<< array[i] << “ ”;
}
8 October 2022 25
List Implemented Using Array
8 October 2022 26
Operations On Lists
• We’ll consider only few operations and not all operations
on Lists
• Let us consider Insert
• There are two possibilities:
• Ordered List
• Unordered List
8 October 2022 27
Insertion into an Ordered List
8 October 2022 28
Insertion in Detail
8 October 2022 29
Insertion
8 October 2022 30
Deletion
8 October 2022 31
Find / Search
• Searching is the process of looking for a specific element in an array
• For example, discovering whether a certain score is included in a list of
scores.
• Searching, like sorting, is a common task in computer programming.
• There are many algorithms and data structures devoted to searching.
• The most common one is the linear search.
8 October 2022 32
Linear Search
• The linear search approach compares the given value with each element
in the array.
• The method continues to do so until the given value matches an element
in the list or the list is exhausted without a match being found.
• If a match is made, the linear search returns the index of the element in
the array that matches the key.
• If no match is found, the search returns -1.
8 October 2022 33
Linear Search
8 October 2022 34
Linear Search Function
int linearsearch (int a[], int n, int key)
{
int i;
for(i=0; i<n; i++)
{
if (a[i] == key)
return i;
}
return -1;
}
8 October 2022 35
Using the Function
• Linearsearch (a,n,item,loc)
• Here "a" is an array of the size n.
• This algorithm finds the location of the element "item" in the array "a".
• If search item is found, it sets loc to the index of the element;
otherwise, it sets loc to -1
• Index=linearsearch(array, num, key)
8 October 2022 36
PrintList Operation
int myarray [5] = {19,68,12,45,72};
/* to print all the elements of the array
for (int i=0;i<5;i++)
{
cout<<myarray[i];
}
8 October 2022 37
8 October 2022 38
Implementing Deletion
8 October 2022 39
Deletion - Another Method
8 October 2022 40
Operations Running Times
PrintList O(N)
Find
Insert O(N) (on average half
Delete needs to be moved)
Find Kth
Next O(1)
Previous
8 October 2022 41
Disadvantages of Using Arrays
• Need to define a size for array
• High overestimate (waste of space)
• insertion and deletion is very slow
• need to move elements of the list
• redundant memory space
• it is difficult to estimate the size of array
8 October 2022 42
Linked List
• Series of nodes
• not adjacent in memory
• contain the element and a pointer to a node containing its
succesor
• Avoids the linear cost of insertion and deletion!
8 October 2022 43
Singly Linked List
8 October 2022 44
Doubly Linked List
8 October 2022 45
Singly Linked List
8 October 2022 46
Singly-linked List - Addition
• Insertion into a singly-linked list has two special cases.
• It's insertion a new node before the head (to the very beginning of the list)
and after the tail (to the very end of the list).
• In any other case, new node is inserted in the middle of the list and so,
has a predecessor and successor in the list.
8 October 2022 47
Empty list case
• When list is empty, which is
indicated by (head == NULL)
condition, the insertion is quite
simple.
• Algorithm sets both head and tail to
point to the new node.
8 October 2022 48
Add first
• In this case, new node is inserted right before the current head node.
8 October 2022 49
Add First - Step 1
• It can be done in two steps:
• Update the next link of the new node, to point to the current head
node.
8 October 2022 50
Add First - Step 2
• Update head link to point to the new node.
8 October 2022 51
8 October 2022 52
Add last
• In this case, new node is inserted right after the current tail node.
• It can be done in two steps:
• Update the next link of the current tail node, to point to the new node.
• Update tail link to point to the new node.
8 October 2022 53
8 October 2022 54
Insert - General Case
• In general case, new node is always inserted between two nodes,
which are already in the list. Head and tail links are not updated in
this case.
• We need to know two nodes "Previous" and "Next", between
which we want to insert the new node.
• This also can be done in two steps:
• Update link of the "previous" node, to point to the new node.
• Update link of the new node, to point to the "next" node.
8 October 2022 55
8 October 2022 56
Singly-linked List - Deletion
• There are four cases, which can occur while removing the node.
• We have the same four situations, but the order of algorithm actions is
opposite.
• Notice, that removal algorithm includes the disposal of the deleted node -
unnecessary in languages with automatic garbage collection (Java).
8 October 2022 57
List has only one node
• When list has only one node, that
the head points to the same node
as the tail, the removal is quite
simple.
• Algorithm disposes the node,
pointed by head (or tail) and sets
both head and tail to NULL.
8 October 2022 58
Remove First
• In this case, first node (current head node) is removed from the list.
• It can be done in two steps:
• Update head link to point to the node, next to the head.
• Dispose removed node.
8 October 2022 59
8 October 2022 60
Remove Last
• In this case, last node (current tail node) is removed from the list. This
operation is a bit more tricky, than removing the first node, because
algorithm should find a node, which is previous to the tail first.
• It can be done in three steps:
• Update tail link to point to the node, before the tail. In order to find it,
list should be traversed first, beginning from the head.
• Set next link of the new tail to NULL.
• Dispose removed node.
8 October 2022 61
8 October 2022 62
Remove - General Case
• In general case, node to be removed is always located between two list
nodes. Head and tail links are not updated in this case.
• We need to know two nodes "Previous" and "Next", of the node which we
want to delete.
• Such a removal can be done in two steps:
• Update next link of the previous node, to point to the next node,
relative to the removed node.
• Dispose removed node.
8 October 2022 63
8 October 2022 64
Advantages of Using Linked Lists
• Need to know where the first node is
• the rest of the nodes can be accessed
• No need to move the elements in the list for insertion and deletion
operations
• No memory waste
8 October 2022 65
Cursor Implementation
Problems with linked list implementation:
• Same language do not support pointers!
• Then how can you use linked lists ?
• new and free operations are slow
• Actually not constant time
• SOLUTION: Implement linked list on an array - called CURSOR
8 October 2022 66
Cursor Implementation - Diagram
8 October 2022 67
Cursor Implementation
If L = 5, then L represents list (A, B, E)
If M = 3, then M represents list (C, D, F)
8 October 2022 68
Arrays - Pros and Cons
• Pros
• Directly supported by C
• Provides random access
• Cons
• Size determined at compile time
• Inserting and deleting elements is time consuming
8 October 2022 69
Linked Lists - Pros and Cons
• Pros
• Size determined during runtime
• Inserting and deleting elements is quick
• Cons
• No random access
• User must provide programming support
8 October 2022 70
Application of Lists
• Lists can be used
• To store the records sequentially
• For creation of stacks and queues
• For polynomial handling
• To maintain the sequence of operations for do / undo in software
• To keep track of the history of web sites visited
8 October 2022 71
Why Doubly Linked List ?
• given only the pointer location, we cannot access its predecessor in the
list.
• Another task that is difficult to perform on a linear linked list is traversing
the list in reverse.
• Doubly linked list A linked list in which each node is linked to both its
successor and its predecessor
• In such a case, where we need to access the node that precedes a given
node, a doubly linked list is useful.
8 October 2022 72
Doubly Linked List
• In a doubly linked list, the nodes are linked in both directions. Each node
of a doubly linked list contains three parts:
• Info: the data stored in the node
• Next: the pointer to the following node
• Back: the pointer to the preceding node
8 October 2022 73
Operations on Doubly Linked Lists
• The algorithms for the insertion and deletion operations on a doubly linked
list are somewhat more complicated than the corresponding operations on
a singly linked list.
• The reason is clear: There are more pointers to keep track of in a doubly
linked list.
8 October 2022 74
Inserting Item
• As an example, consider the Inserting an item.
• To link the new node, after a given node, in a singly linked list, we need to
change two pointers:
• newNode->next and
• location->next.
• The same operation on a doubly linked list requires four pointer changes.
8 October 2022 75
Singly Linked List Insertion
8 October 2022 76
Doubly Linked List Insertion
8 October 2022 77
The Order is Important
8 October 2022 78
Doubly Linked List - Deletion
• One useful feature of a doubly linked list is its elimination of the need for a
pointer to a node's predecessor to delete the node.
• Through the back member, we can alter the next member of the preceding
node to make it jump over the unwanted node.
• Then we make the back pointer of the succeeding node point to the
preceding node.
8 October 2022 79
Doubly Linked List - Deletion
8 October 2022 80
Special Cases of Deletion
• We do, however, have to be careful about the end cases:
• If location->back is NULL, we are deleting the first node
• if location->next is NULL, we are deleting the last node.
• If both location->back and location->next are NULL, we are deleting
the only node.
8 October 2022 81

More Related Content

Similar to UNIT 3 PPT.ppt

Introduction to DS.pptx
Introduction to DS.pptxIntroduction to DS.pptx
Introduction to DS.pptx
OnkarModhave
 

Similar to UNIT 3 PPT.ppt (20)

ADS Introduction
ADS IntroductionADS Introduction
ADS Introduction
 
dsa3.ppt
dsa3.pptdsa3.ppt
dsa3.ppt
 
Introduction to data_structure
Introduction to data_structureIntroduction to data_structure
Introduction to data_structure
 
02._Object-Oriented_Programming_Concepts.ppt
02._Object-Oriented_Programming_Concepts.ppt02._Object-Oriented_Programming_Concepts.ppt
02._Object-Oriented_Programming_Concepts.ppt
 
Data Structures - Lecture 1 - Unit 1.pptx
Data Structures  - Lecture 1 - Unit 1.pptxData Structures  - Lecture 1 - Unit 1.pptx
Data Structures - Lecture 1 - Unit 1.pptx
 
Data structure Unit-I Part A
Data structure Unit-I Part AData structure Unit-I Part A
Data structure Unit-I Part A
 
b,Sc it data structure.pptx
b,Sc it data structure.pptxb,Sc it data structure.pptx
b,Sc it data structure.pptx
 
b,Sc it data structure.pptx
b,Sc it data structure.pptxb,Sc it data structure.pptx
b,Sc it data structure.pptx
 
Intro_2.ppt
Intro_2.pptIntro_2.ppt
Intro_2.ppt
 
Intro.ppt
Intro.pptIntro.ppt
Intro.ppt
 
Intro.ppt
Intro.pptIntro.ppt
Intro.ppt
 
algo 1.ppt
algo 1.pptalgo 1.ppt
algo 1.ppt
 
01. introduction to data structures
01. introduction to data structures01. introduction to data structures
01. introduction to data structures
 
b,Sc it data structure.ppt
b,Sc it data structure.pptb,Sc it data structure.ppt
b,Sc it data structure.ppt
 
dsa.ppt
dsa.pptdsa.ppt
dsa.ppt
 
Data structure and algorithm.
Data structure and algorithm. Data structure and algorithm.
Data structure and algorithm.
 
Dsa module 1 ppt
Dsa module 1 pptDsa module 1 ppt
Dsa module 1 ppt
 
Data Structure and Algorithms
Data Structure and AlgorithmsData Structure and Algorithms
Data Structure and Algorithms
 
DS Module 1.pptx
DS Module 1.pptxDS Module 1.pptx
DS Module 1.pptx
 
Introduction to DS.pptx
Introduction to DS.pptxIntroduction to DS.pptx
Introduction to DS.pptx
 

Recently uploaded

Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 

Recently uploaded (20)

University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086Minimum and Maximum Modes of microprocessor 8086
Minimum and Maximum Modes of microprocessor 8086
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 

UNIT 3 PPT.ppt

  • 1. Topics • Introduction • Definitions • Classification of data structures • Arrays and linked lists • Abstract data types [ADT] • The list ADT • Array-based implementation • Linked list implementation • Cursor-based implementation • Doubly linked lists 8 October 2022 1
  • 2. Data Structure [Wikipedia] • Data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently. • Different kinds of data structures are suited to different kinds of applications. • Storing and retrieving can be carried out on data stored in both main memory and in secondary memory. 8 October 2022 2
  • 3. Merriam-Webster's Definition • Way in which data are stored for efficient search and retrieval. • The simplest data structure is the one-dimensional (linear) array. • Data items stored non-consecutively in memory may be linked by pointers. • Many algorithms have been developed for storing data efficiently. 8 October 2022 3
  • 4. Algorithms [Wikipedia] • An algorithm is a step-by-step procedure for calculations. • An algorithm is an effective method expressed as a finite list of well- defined instructions for calculating a function. • The transition from one state to the next is not necessarily deterministic; some algorithms incorporate random input. 8 October 2022 4
  • 5. Merriam-Webster's Definition • Procedure that produces the answer to a question or the solution to a problem in a finite number of steps. • An algorithm that produces a yes or no answer is called a decision procedure; one that leads to a solution is a computation procedure. • Example: a mathematical formula and the instructions in a computer program 8 October 2022 5
  • 6. Data Structure Classification • Primitive / Non-primitive • Basic data structures available / derived from primitive data structures • Homogeneous / Heterogeneous • Elements are of the same type / different types • Static / Dynamic • Memory is allocated at the time of compilation / run-time • Linear / Non-linear • Maintain a linear relationship between element 8 October 2022 6
  • 7. ADT - General Concept • Problem solving with a computer means processing data • To process data, we need to define the data type and the operation to be performed on the data • The definition of the data type and the definition of the operation to be applied to the data is part of the idea behind an abstract data type (ADT) 8 October 2022 7
  • 8. ADT - General Concept • The user of an ADT needs only to know that a set of operations are available for the data type, but does not need to know how they are applied • Several simple adt’s, such as integer, real, character, pointer and so on, have been implemented and are available for use in most languages 8 October 2022 8
  • 9. Data Types • A data type is characterized by: • A set of values • A data representation, which is common to all these values, and • A set of operations, which can be applied uniformly to all these values 8 October 2022 9
  • 10. Primitive Data Types • Languages like ‘C’ provides the following primitive data types: • boolean • char, byte, int • float, double • Each primitive type has: • A set of values • A data representation • A set of operations • These are “set in stone”. 8 October 2022 10
  • 11. ADT Definition [Wikipedia] • In computer science, an abstract data type (ADT) is a mathematical model for a certain class of data structures that have similar behavior. • An abstract data type is defined indirectly, only by the operations that may be performed on it and by mathematical constraints on the effects (and possibly cost) of those operations. 8 October 2022 11
  • 12. ADT Definition [Wikipedia] • An ADT may be implemented by specific data types or data structures, in many ways and in many programming languages; or described in a formal specification language. • Example, an abstract stack could be defined by three operations: • Push, that inserts some data item onto the structure, • Pop, that extracts an item from it, and • Peek, that allows data on top of the structure to be examined without removal. 8 October 2022 12
  • 13. Definition from techforum4you • Abstract data types or adt’s are a mathematical specification of a set of data and the set of operations that can be performed on the data. • They are abstract in the sense that the focus is on the definitions and the various operations with their arguments. • The actual implementation is not defined, and does not affect the use of the adt. 8 October 2022 13
  • 14. ADT in Simple Words • Definition: • Is a set of operation • Mathematical abstraction • No implementation detail • Example: • Lists, sets, graphs, stacks are examples of ADT along with their operations 8 October 2022 14
  • 15. Why ADT? • Modularity • divide program into small functions • easy to debug and maintain • easy to modify • group work • Reuse • do some operations only once • Easy to change the implementation • transparent to the program 8 October 2022 15
  • 16. Implementing an ADT • To implement an ADT, you need to choose: • A data representation • must be able to represent all necessary values of the ADT • should be private • An algorithm for each of the necessary operation: • must be consistent with the chosen representation • all auxiliary (helper) operations that are not in the contract should be private • Remember: Once other people are using it • It’s easy to add functionality 8 October 2022 16
  • 17. The List ADT • The List is an • Ordered sequence of data items called elements • A1, A2, A3, …,AN is a list of size N • size of an empty list is 0 • Ai+1 succeeds Ai • Ai-1 preceeds Ai • Position of Ai is i • First element is A1 called “head” • Last element is AN called “tail” 8 October 2022 17
  • 18. Operations on Lists • Make Empty • Print List • Find • Find Kth • Insert • Delete • Next • Previous 8 October 2022 18
  • 19. List – An Example • The elements of a list are 34, 12, 52, 16, 12 • Find (52) -> 3 • Insert (20, 4) -> 34, 12, 52, 20, 16, 12 • Delete (52) -> 34, 12, 20, 16, 12 • Find Kth (3) -> 20 8 October 2022 19
  • 20. List - Implementation • Lists can be implemented using: • Arrays • Linked List • Cursor [Linked List using Arrays] 8 October 2022 20
  • 21. Arrays • Array is a static data structure that represents a collection of fixed number of homogeneous data items or • A fixed-size indexed sequence of elements, all of the same type. • The individual elements are typically stored in consecutive memory locations. • The length of the array is determined when the array is created, and cannot be changed. 8 October 2022 21
  • 22. Arrays • Any component of the array can be inspected or updated by using its index. • This is an efficient operation • O(1) = constant time • The array indices may be integers (C, Java) or other discrete data types (Pascal, Ada). • The lower bound may be zero (C, Java), one (Fortran), or chosen by the programmer (Pascal, Ada) 8 October 2022 22
  • 23. Different Types of Arrays • One-dimensional array: only one index is used • Multi-dimensional array: array involving more than one index • Static array: the compiler determines how memory will be allocated for the array • Dynamic array: memory allocation takes place during execution 8 October 2022 23
  • 24. One Dimensional Static Array • Syntax: Element type array name [capacity]; Element type array name [capacity] = { initializer_list }; • Example in C++: int b [5]; int b [5] = {19, 68, 12, 45, 72}; 8 October 2022 24
  • 25. Array Output Function void display(int array[],int num_values) { for (int i = 0; i<num_values; i++) cout<< array[i] << “ ”; } 8 October 2022 25
  • 26. List Implemented Using Array 8 October 2022 26
  • 27. Operations On Lists • We’ll consider only few operations and not all operations on Lists • Let us consider Insert • There are two possibilities: • Ordered List • Unordered List 8 October 2022 27
  • 28. Insertion into an Ordered List 8 October 2022 28
  • 29. Insertion in Detail 8 October 2022 29
  • 32. Find / Search • Searching is the process of looking for a specific element in an array • For example, discovering whether a certain score is included in a list of scores. • Searching, like sorting, is a common task in computer programming. • There are many algorithms and data structures devoted to searching. • The most common one is the linear search. 8 October 2022 32
  • 33. Linear Search • The linear search approach compares the given value with each element in the array. • The method continues to do so until the given value matches an element in the list or the list is exhausted without a match being found. • If a match is made, the linear search returns the index of the element in the array that matches the key. • If no match is found, the search returns -1. 8 October 2022 33
  • 35. Linear Search Function int linearsearch (int a[], int n, int key) { int i; for(i=0; i<n; i++) { if (a[i] == key) return i; } return -1; } 8 October 2022 35
  • 36. Using the Function • Linearsearch (a,n,item,loc) • Here "a" is an array of the size n. • This algorithm finds the location of the element "item" in the array "a". • If search item is found, it sets loc to the index of the element; otherwise, it sets loc to -1 • Index=linearsearch(array, num, key) 8 October 2022 36
  • 37. PrintList Operation int myarray [5] = {19,68,12,45,72}; /* to print all the elements of the array for (int i=0;i<5;i++) { cout<<myarray[i]; } 8 October 2022 37
  • 40. Deletion - Another Method 8 October 2022 40
  • 41. Operations Running Times PrintList O(N) Find Insert O(N) (on average half Delete needs to be moved) Find Kth Next O(1) Previous 8 October 2022 41
  • 42. Disadvantages of Using Arrays • Need to define a size for array • High overestimate (waste of space) • insertion and deletion is very slow • need to move elements of the list • redundant memory space • it is difficult to estimate the size of array 8 October 2022 42
  • 43. Linked List • Series of nodes • not adjacent in memory • contain the element and a pointer to a node containing its succesor • Avoids the linear cost of insertion and deletion! 8 October 2022 43
  • 44. Singly Linked List 8 October 2022 44
  • 45. Doubly Linked List 8 October 2022 45
  • 46. Singly Linked List 8 October 2022 46
  • 47. Singly-linked List - Addition • Insertion into a singly-linked list has two special cases. • It's insertion a new node before the head (to the very beginning of the list) and after the tail (to the very end of the list). • In any other case, new node is inserted in the middle of the list and so, has a predecessor and successor in the list. 8 October 2022 47
  • 48. Empty list case • When list is empty, which is indicated by (head == NULL) condition, the insertion is quite simple. • Algorithm sets both head and tail to point to the new node. 8 October 2022 48
  • 49. Add first • In this case, new node is inserted right before the current head node. 8 October 2022 49
  • 50. Add First - Step 1 • It can be done in two steps: • Update the next link of the new node, to point to the current head node. 8 October 2022 50
  • 51. Add First - Step 2 • Update head link to point to the new node. 8 October 2022 51
  • 53. Add last • In this case, new node is inserted right after the current tail node. • It can be done in two steps: • Update the next link of the current tail node, to point to the new node. • Update tail link to point to the new node. 8 October 2022 53
  • 55. Insert - General Case • In general case, new node is always inserted between two nodes, which are already in the list. Head and tail links are not updated in this case. • We need to know two nodes "Previous" and "Next", between which we want to insert the new node. • This also can be done in two steps: • Update link of the "previous" node, to point to the new node. • Update link of the new node, to point to the "next" node. 8 October 2022 55
  • 57. Singly-linked List - Deletion • There are four cases, which can occur while removing the node. • We have the same four situations, but the order of algorithm actions is opposite. • Notice, that removal algorithm includes the disposal of the deleted node - unnecessary in languages with automatic garbage collection (Java). 8 October 2022 57
  • 58. List has only one node • When list has only one node, that the head points to the same node as the tail, the removal is quite simple. • Algorithm disposes the node, pointed by head (or tail) and sets both head and tail to NULL. 8 October 2022 58
  • 59. Remove First • In this case, first node (current head node) is removed from the list. • It can be done in two steps: • Update head link to point to the node, next to the head. • Dispose removed node. 8 October 2022 59
  • 61. Remove Last • In this case, last node (current tail node) is removed from the list. This operation is a bit more tricky, than removing the first node, because algorithm should find a node, which is previous to the tail first. • It can be done in three steps: • Update tail link to point to the node, before the tail. In order to find it, list should be traversed first, beginning from the head. • Set next link of the new tail to NULL. • Dispose removed node. 8 October 2022 61
  • 63. Remove - General Case • In general case, node to be removed is always located between two list nodes. Head and tail links are not updated in this case. • We need to know two nodes "Previous" and "Next", of the node which we want to delete. • Such a removal can be done in two steps: • Update next link of the previous node, to point to the next node, relative to the removed node. • Dispose removed node. 8 October 2022 63
  • 65. Advantages of Using Linked Lists • Need to know where the first node is • the rest of the nodes can be accessed • No need to move the elements in the list for insertion and deletion operations • No memory waste 8 October 2022 65
  • 66. Cursor Implementation Problems with linked list implementation: • Same language do not support pointers! • Then how can you use linked lists ? • new and free operations are slow • Actually not constant time • SOLUTION: Implement linked list on an array - called CURSOR 8 October 2022 66
  • 67. Cursor Implementation - Diagram 8 October 2022 67
  • 68. Cursor Implementation If L = 5, then L represents list (A, B, E) If M = 3, then M represents list (C, D, F) 8 October 2022 68
  • 69. Arrays - Pros and Cons • Pros • Directly supported by C • Provides random access • Cons • Size determined at compile time • Inserting and deleting elements is time consuming 8 October 2022 69
  • 70. Linked Lists - Pros and Cons • Pros • Size determined during runtime • Inserting and deleting elements is quick • Cons • No random access • User must provide programming support 8 October 2022 70
  • 71. Application of Lists • Lists can be used • To store the records sequentially • For creation of stacks and queues • For polynomial handling • To maintain the sequence of operations for do / undo in software • To keep track of the history of web sites visited 8 October 2022 71
  • 72. Why Doubly Linked List ? • given only the pointer location, we cannot access its predecessor in the list. • Another task that is difficult to perform on a linear linked list is traversing the list in reverse. • Doubly linked list A linked list in which each node is linked to both its successor and its predecessor • In such a case, where we need to access the node that precedes a given node, a doubly linked list is useful. 8 October 2022 72
  • 73. Doubly Linked List • In a doubly linked list, the nodes are linked in both directions. Each node of a doubly linked list contains three parts: • Info: the data stored in the node • Next: the pointer to the following node • Back: the pointer to the preceding node 8 October 2022 73
  • 74. Operations on Doubly Linked Lists • The algorithms for the insertion and deletion operations on a doubly linked list are somewhat more complicated than the corresponding operations on a singly linked list. • The reason is clear: There are more pointers to keep track of in a doubly linked list. 8 October 2022 74
  • 75. Inserting Item • As an example, consider the Inserting an item. • To link the new node, after a given node, in a singly linked list, we need to change two pointers: • newNode->next and • location->next. • The same operation on a doubly linked list requires four pointer changes. 8 October 2022 75
  • 76. Singly Linked List Insertion 8 October 2022 76
  • 77. Doubly Linked List Insertion 8 October 2022 77
  • 78. The Order is Important 8 October 2022 78
  • 79. Doubly Linked List - Deletion • One useful feature of a doubly linked list is its elimination of the need for a pointer to a node's predecessor to delete the node. • Through the back member, we can alter the next member of the preceding node to make it jump over the unwanted node. • Then we make the back pointer of the succeeding node point to the preceding node. 8 October 2022 79
  • 80. Doubly Linked List - Deletion 8 October 2022 80
  • 81. Special Cases of Deletion • We do, however, have to be careful about the end cases: • If location->back is NULL, we are deleting the first node • if location->next is NULL, we are deleting the last node. • If both location->back and location->next are NULL, we are deleting the only node. 8 October 2022 81