0% found this document useful (0 votes)
495 views59 pages

Introduction to Data Structures in C++

The document provides an overview of the concepts and topics that will be covered in a data structures course. It discusses that the course will prepare students for more advanced material by covering common data structures like arrays, linked lists, stacks, queues, trees and graphs. It will teach how to implement these data structures in C++ and analyze their time and space efficiency. The document outlines the course contents, prerequisites, books recommended, policies on assignments and projects, and goals of the course.

Uploaded by

Taimoor Aslam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
495 views59 pages

Introduction to Data Structures in C++

The document provides an overview of the concepts and topics that will be covered in a data structures course. It discusses that the course will prepare students for more advanced material by covering common data structures like arrays, linked lists, stacks, queues, trees and graphs. It will teach how to implement these data structures in C++ and analyze their time and space efficiency. The document outlines the course contents, prerequisites, books recommended, policies on assignments and projects, and goals of the course.

Uploaded by

Taimoor Aslam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 59

Data Structures

Lecture No.01
Course TA
 TA (to be announced later)

 Never hesitate to contact with me or TAs


whenever you have some problem
Pre-Requisites
 Must have Good OOP Concepts

 Good programming skills

 Familiar with programming


Data Structures
 Prepares the students for (and is a
prerequisite for) the more advanced
material students will encounter in later
courses.
 Cover well-known data structures such as
dynamic arrays, linked lists, stacks,
queues, tree and graphs.
 Implement data structures in C++
Books
 Data Structures and Algorithms
By A. V. Aho, J. E. Hopcroft, J. D. Ullman

 Introductions to algorithms by Thomas H.Cormen, Leiserson, Rivest


and Stein.
 Data Structures Using C and C++
By Y. Langsam, M. J. Augenstein, A. M. Tenenbaum

 Schaum's Outline Series, Theory and problems of Data Structures


By Seymour Lipschutz

Some topics will be covered from other books. Material will be provided
for these topics.
Projects/Homeworks
submission
 Deadlines are always final
 Submission guidelines must be followed.
 Submit compressed files (Winzip Only).
 Name your submission folder in the format
RollNo_Name_HW#
 e.g. 123_Umar_HW#3
 Submissions by email will not be accepted
Dishonesty, Cheating in Quizzes,
Assignments & Projects
 Copying material in any form (code or otherwise)
is not allowed.
 This will still be cheating even if you try to
substitute or restructure words, structures,
paras.
 You can always discuss ways to solve problem
with your colleagues however you should not
copy code.
 Penalty can be a zero in that and one other
assignment on to a penalty of an zero sessional
marks.
Course Contents
 Introduction
 Complexity Analysis
 Simple Data Types and Abstract Data Types
 Arrays and Lists
 Elementary Data Structures
 Stack and Queues
 Recursion and Time Complexity of Recursive Algorithms
 Trees and Graphs
 Set structure
 Searching techniques
 Hashing
 Sorting techniques
What is a Computer Program?
 To exactly know, what is data structure?
We must know:
 What is a computer program?

Some mysterious
processing Output
Input
Introduction to Data Structure
Algorithm
Data Structures
 Prepares the students for (and is a
prerequisite for) the more advanced
material students will encounter in later
courses.
 Cover well-known data structures such as
dynamic arrays, linked lists, stacks,
queues, tree and graphs.
 Implement data structures in C++
Data Structures
 Prepares the students for (and is a
prerequisite for) the more advanced
material students will encounter in later
courses.
 Cover well-known data structures such as
dynamic arrays, linked lists, stacks,
queues, tree and graphs.
 Implement data structures in C++
Need for Data Structures
 Data structures organize data  more
efficient programs.
 More powerful computers  more
complex applications.
 More complex applications demand more
calculations.
Need for Data Structures
 Data structures organize data  more
efficient programs.
 More powerful computers  more
complex applications.
 More complex applications demand more
calculations.
Need for Data Structures
 Data structures organize data  more
efficient programs.
 More powerful computers  more
complex applications.
 More complex applications demand more
calculations.
Organizing Data
 Any organization for a collection of records
that can be searched, processed in any
order, or modified.
 The choice of data structure and algorithm
can make the difference between a
program running in a few seconds or many
days.
Organizing Data
 Any organization for a collection of records
that can be searched, processed in any
order, or modified.
 The choice of data structure and algorithm
can make the difference between a
program running in a few seconds or many
days.
Efficiency
 A solution is said to be efficient if it solves
the problem within its resource constraints.
 Space
 Time

 The cost of a solution is the amount of


resources that the solution consumes.
Efficiency
 A solution is said to be efficient if it solves
the problem within its resource constraints.
 Space
 Time

 The cost of a solution is the amount of


resources that the solution consumes.
Selecting a Data Structure
Select a data structure as follows:
1. Analyze the problem to determine the
resource constraints a solution must
meet.
2. Determine the basic operations that must
be supported. Quantify the resource
constraints for each operation.
3. Select the data structure that best meets
these requirements.
Selecting a Data Structure
Select a data structure as follows:
1. Analyze the problem to determine the
resource constraints a solution must
meet.
2. Determine the basic operations that must
be supported. Quantify the resource
constraints for each operation.
3. Select the data structure that best meets
these requirements.
Selecting a Data Structure
Select a data structure as follows:
1. Analyze the problem to determine the
resource constraints a solution must
meet.
2. Determine the basic operations that must
be supported. Quantify the resource
constraints for each operation.
3. Select the data structure that best meets
these requirements.
Some Questions to Ask
 Are all data inserted into the data structure
at the beginning, or are insertions
interspersed with other operations?
 Can data be deleted?
 Are all data processed in some well-
defined order, or is random access
allowed?
Some Questions to Ask
 Are all data inserted into the data structure
at the beginning, or are insertions
interspersed with other operations?
 Can data be deleted?
 Are all data processed in some well-
defined order, or is random access
allowed?
Some Questions to Ask
 Are all data inserted into the data structure
at the beginning, or are insertions
interspersed with other operations?
 Can data be deleted?
 Are all data processed in some well-
defined order, or is random access
allowed?
Data Structure Philosophy
 Each data structure has costs and
benefits.
 Rarely is one data structure better than
another in all situations.
 A data structure requires:
 space for each data item it stores,
 time to perform each basic operation,
 programming effort.
Data Structure Philosophy
 Each data structure has costs and
benefits.
 Rarely is one data structure better than
another in all situations.
 A data structure requires:
 space for each data item it stores,
 time to perform each basic operation,
 programming effort.
Data Structure Philosophy
 Each data structure has costs and
benefits.
 Rarely is one data structure better than
another in all situations.
 A data structure requires:
 space for each data item it stores,
 time to perform each basic operation,
 programming effort.
Goals of this Course
1. Reinforce the concept that costs and benefits
occur for every data structure.

2. Learn the commonly used data structures.


 These form a programmer's basic data structure
“toolkit.”

3. Understand how to measure the cost of a data


structure or program.
 These techniques also allow you to judge the merits
of new data structures that you or others might
invent.
Goals of this Course
1. Reinforce the concept that costs and benefits
exist for every data structure.

2. Learn the commonly used data structures.


 These form a programmer's basic data structure
“toolkit”.

3. Understand how to measure the cost of a data


structure or program.
 These techniques also allow you to judge the merits
of new data structures that you or others might
invent.
Goals of this Course
1. Reinforce the concept that costs and benefits
exist for every data structure.

2. Learn the commonly used data structures.


 These form a programmer's basic data structure
“toolkit”.

3. Understand how to measure the cost of a data


structure or program.
 These techniques also allow you to judge the merits
of new data structures that you or others might
invent.
Arrays
 Elementary data structure that exists as built-in
in most programming languages.

main( int argc, char** argv )


{
int x[6];
int j;
for(j=0; j < 6; j++)
x[j] = 2*j;
}
Arrays
 Array declaration: int x[6];
 An array is collection of cells of the same type.
 The collection has the name ‘x’.
 The cells are numbered with consecutive
integers.
 To access a cell, use the array name and an
index:
x[0], x[1], x[2], x[3], x[4], x[5]
Array Layout
x[0]
Array cells are x[1]
contiguous in
computer memory x[2]

The memory can be x[3]


thought of as an x[4]
array
x[5]
What is Array Name?
 ‘x’ is an array name but there is no variable x. ‘x’ is not an lvalue.
 For example, if we have the code

int a, b;

then we can write

b = 2;
a = b;
a = 5;

But we cannot write

2 = a;
What is Array Name?
 ‘x’ is an array name but there is no variable x. ‘x’ is not an lvalue.
 For example, if we have the code

int a, b;

then we can write

b = 2;
a = b;
a = 5;

But we cannot write

2 = a;
What is Array Name?
 ‘x’ is an array name but there is no variable x. ‘x’ is not an lvalue.
 For example, if we have the code

int a, b;

then we can write

b = 2;
a = b;
a = 5;

But we cannot write

2 = a;
Array Name
 ‘x’ is not an lvalue
int x[6];
int n;
x[0] = 5;
x[1] = 2;
x = 3; // not allowed
x = a + b; // not allowed
x = &n; // not allowed
Array Name
 ‘x’ is not an lvalue
int x[6];
int n;
x[0] = 5;
x[1] = 2;
x = 3; // not allowed
x = a + b; // not allowed
x = &n; // not allowed
Dynamic Arrays
 You would like to use an array data structure
but you do not know the size of the array at
compile time.
 You find out when the program executes that
you need an integer array of size n=20.
 Allocate an array using the new operator:

int* y = new int[20]; // or int* y = new int[n]


y[0] = 10;
y[1] = 15; // use is the same
Dynamic Arrays
 You would like to use an array data structure
but you do not know the size of the array at
compile time.
 You find out when the program executes that
you need an integer array of size n=20.
 Allocate an array using the new operator:

int* y = new int[20]; // or int* y = new int[n]


y[0] = 10;
y[1] = 15; // use is the same
Dynamic Arrays
 You would like to use an array data structure
but you do not know the size of the array at
compile time.
 You find out when the program executes that
you need an integer array of size n=20.
 Allocate an array using the new operator:

int* y = new int[20]; // or int* y = new int[n]


y[0] = 10;
y[1] = 15; // use is the same
Dynamic Arrays
 ‘y’ is a lvalue; it is a pointer that holds the
address of 20 consecutive cells in memory.
 It can be assigned a value. The new operator
returns as address that is stored in y.
 We can write:

y = &x[0];
y = x; // x can appear on the right
// y gets the address of the
// first cell of the x array
Dynamic Arrays
 ‘y’ is a lvalue; it is a pointer that holds the
address of 20 consecutive cells in memory.
 It can be assigned a value. The new operator
returns as address that is stored in y.
 We can write:

y = &x[0];
y = x; // x can appear on the right
// y gets the address of the
// first cell of the x array
Dynamic Arrays
 ‘y’ is a lvalue; it is a pointer that holds the
address of 20 consecutive cells in memory.
 It can be assigned a value. The new operator
returns as address that is stored in y.
 We can write:

y = &x[0];
y = x; // x can appear on the right
// y gets the address of the
// first cell of the x array
Dynamic Arrays
 We must free the memory we got using the
new operator once we are done with the y
array.

delete[ ] y;

 We would not do this to the x array because we


did not use new to create it.
The LIST Data Structure
 The List is among the most generic of data
structures.

 Real life:

a. shopping list,
b. groceries list,
c. list of people to invite to dinner
d. List of presents to get
Lists
 A list is collection of items that are all of the
same type (grocery items, integers, names)

 The items, or elements of the list, are stored in


some particular order

 It is possible to insert new elements into


various positions in the list and remove any
element of the list
Lists
 A list is collection of items that are all of the
same type (grocery items, integers, names)

 The items, or elements of the list, are stored in


some particular order

 It is possible to insert new elements into


various positions in the list and remove any
element of the list
Lists
 A list is collection of items that are all of the
same type (grocery items, integers, names)

 The items, or elements of the list, are stored in


some particular order

 It is possible to insert new elements into


various positions in the list and remove any
element of the list
Lists
 List is a set of elements in a linear order.
For example, data values a1, a2, a3, a4 can be
arranged in a list:
(a3, a1, a2, a4)
In this list, a3, is the first element, a1 is the
second element, and so on

 The order is important here; this is not just a


random collection of elements, it is an ordered
collection
Lists
 List is a set of elements in a linear order.
For example, data values a1, a2, a3, a4 can be
arranged in a list:
(a3, a1, a2, a4)
In this list, a3, is the first element, a1 is the
second element, and so on

 The order is important here; this is not just a


random collection of elements, it is an ordered
collection
List Operations
Useful operations
 createList(): create a new list (presumably empty)
 copy(): set one list to be a copy of another
 clear(); clear a list (remove all elments)
 insert(X, ?): Insert element X at a particular position
in the list
 remove(?): Remove element at some position in
the list
 get(?): Get element at a given position
 update(X, ?): replace the element at a given position
with X
 find(X): determine if the element X is in the list
 length(): return the length of the list.
List Operations
 We need to decide what is meant by “particular
position”; we have used “?” for this.

 There are two possibilities:

1. Use the actual index of element: insert after element


3, get element number 6. This approach is taken by
arrays
2. Use a “current” marker or pointer to refer to a
particular position in the list.
List Operations
 We need to decide what is meant by “particular
position”; we have used “?” for this.

 There are two possibilities:

1. Use the actual index of element: insert after element


3, get element number 6. This approach is taken by
arrays
2. Use a “current” marker or pointer to refer to a
particular position in the list.
List Operations
 If we use the “current” marker, the following
four methods would be useful:

 start(): moves to “current” pointer to the very first


element.
 tail(): moves to “current” pointer to the very last
element.
 next(): move the current position forward one
element
 back(): move the current position backward one
element
Example
 Data structure for storing data of students:-
 Arrays
 Linked Lists
 Issues
 Space needed
 Operations efficiency (Time required to complete
operations)
 Retrieval
 Insertion
 Deletion
What data structure to use?
Data structures let the input and output be represented in a way
that can be handled efficiently and effectively.
array

Linked list

queue
tree stack

You might also like