0% found this document useful (0 votes)
9 views

Lecture No.02 - Arrays

A data structure is a collection of data values and the relationships between them, along with the operations that can be performed on the data. It provides a structured way to store, organize, and retrieve data in memory.

Uploaded by

Maida Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Lecture No.02 - Arrays

A data structure is a collection of data values and the relationships between them, along with the operations that can be performed on the data. It provides a structured way to store, organize, and retrieve data in memory.

Uploaded by

Maida Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Data Structures and

Algorithms
Mr. Tahir Iqbal
[email protected]

Lecture 02: Arrays

Tahir Iqbal, Department of Computer Sciences, BULC


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++

Tahir Iqbal, Department of Computer Sciences, BULC


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++

Tahir Iqbal, Department of Computer Sciences, BULC


Need for Data Structures
 Data structures organize data  more efficient
programs.
 More powerful computers  more complex
applications.
 More complex applications demand more
calculations.

Tahir Iqbal, Department of Computer Sciences, BULC


Need for Data Structures
 Data structures organize data  more efficient
programs.
 More powerful computers  more complex
applications.
 More complex applications demand more
calculations.

Tahir Iqbal, Department of Computer Sciences, BULC


Need for Data Structures
 Data structures organize data  more efficient
programs.
 More powerful computers  more complex
applications.
 More complex applications demand more
calculations.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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?

Tahir Iqbal, Department of Computer Sciences, BULC


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?

Tahir Iqbal, Department of Computer Sciences, BULC


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?

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


Arrays
 Array declaration: int x[6];
 Fundamental Data Structure
 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]

Tahir Iqbal, Department of Computer Sciences, BULC


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]

Tahir Iqbal, Department of Computer Sciences, BULC


What is Array Name?
 ‘x’ is an array name but there is no variable x. ‘x’ is not an
value.
 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;
Tahir Iqbal, Department of Computer Sciences, BULC
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;
Tahir Iqbal, Department of Computer Sciences, BULC
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;
Tahir Iqbal, Department of Computer Sciences, BULC
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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC


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.
Tahir Iqbal, Department of Computer Sciences, BULC
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.

Tahir Iqbal, Department of Computer Sciences, BULC


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.

Tahir Iqbal, Department of Computer Sciences, BULC


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

Tahir Iqbal, Department of Computer Sciences, BULC

You might also like