Lecture 2: Arrays - The Institute of Finance Management (IFM)
Download
Report
Transcript Lecture 2: Arrays - The Institute of Finance Management (IFM)
Data Structure and
Algorithm: CIT231
Lecture 3:
Arrays and ADT
Bajuna Salehe
[email protected]
Function for Deleting Array
void array::del (int pos)
{
//skip to the desired position
for (int i=pos; i<MAX; i++)
arr[i-1] = arr[i];
arr[i-1]=0;
}
Displaying the array
void array::display ()
{
cout<<endl;
//Traverse the entire array
for (int i = 0; I < MAX; i++)
cout<<“ “<<arr[i];
}
A first look an ADTs
Solving a problem involves processing data, and an
important part of the solution is the careful organization
of the data
In order to do that, we need to identify:
The collection of data items
Basic operation that must be performed on them
1.
2.
Abstract Data Type (ADT): a collection of data items
together with the operations on the data
Abstract Data Type (ADT)
The
word “abstract” refers to the fact
that the data and the basic operations
defined on it are being studied
independently of how they are
implemented.
We
think about what can be done
with the data, not how it is done
Types
A type (data type) is a set of
values that an object can have.
An abstract data type (ADT) is a:
data
type
Set of functions (operations) that
operates on data of that type
Each function is defined by its
signature.
Can also specify operations formally
(see section 4.2.5) (Algebraic data
types): f(g(A,S)) = A
Example ADT
ADT student:
Operations:
SetName: name x student student
GetName: student name
SetCourse: course x student student
GetCourse: student course *
GetCredits: student integer
In this example, Name and Course are
undefined ADTs. They are defined by some
other abstraction.
Real world ADT example
Implementation of ADT
An implementation of ADT consists of
storage structures to store the data items
and algorithms for basic operation
Data Structures, Abstract Data Types,
and Implementations in Real World
Consider example of an airplane flight with
10 seats to be assigned
Tasks
List
available seats
Reserve a seat
How to store, access data?
Data Structures, Abstract Data
Types, and Implementations
Consider example of an airplane flight with
10 seats to be assigned
Tasks
List
available seats
Reserve a seat
How to store, access data?
10
individual variables
Use 10 individual variables
Algorithm to List available seats
1. If seat1 == ‘ ’:
display 1
2. If seat2 == ‘ ’:
display 2
.
.
.
10. If seat10 == ‘ ’:
display 10
Algorithm to Reserve a seat
1. Set DONE to false
2. If seat1 ==‘ ’:
print “do you want seat #1??”
Get answer
if answer==‘Y’:
set seat1 to ‘X’
set Done to True
3. If seat2 ==‘ ’:
print “do you want seat #2??”
Get answer
if answer==‘Y’:
set seat2 to ‘X’
set Done to True
.
.
.
Data Structures, Abstract Data Types,
and Implementations
Consider example of an airplane flight with
10 seats to be assigned
Tasks
List
available seats
Reserve a seat
How to store, access data?
10
individual variables
An array of variables
Use Array
Algorithm to List available
seats
For number ranging from 0 to max_seats-1, do:
If seat[number] == ‘ ’:
Display number
Algorithm to Reserve a seat
Readin number of seat to be reserved
If seat[number] is equal to ‘ ’:
set seat[number] to ‘X’
Else
Display a message that the seat having this
number is occupied
ADTs
In this simple example, it does illustrate the
concept of an Abstract Data Type
ADT consists of
The collection of data items
Basic operation that must be performed on
them
1.
2.
In the example, a collection of data is a list of
seats
The basic operations are (1) Scan the list to
determine which seats are occupied (2)
Data Structure and Abstract Data
Type
The term of Data Structure and Abstract
Data Type are often used interchangeably
However, we use ADT when data is
studied at a logical level
The term data structure refers to a
construct in programming language that
can be used to store data
Array ADT
Collection
of data elements
A fixed-size
sequence of elements, all of
the same type
Basic
Operations
Direct
access to each element in the
array by specifying its position so that
values can be retrieved from or stored in
that position
Different types of Array
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
Array and ADT
Collection of data elements
A fixed-size sequence of elements, all of the same type
Basic Operations
Direct access to each element in the array by specifying
its position so that values can be retrieved from or
stored in that position
An Array as an ADT
C++ Array
Fixed size ----------------------specify the capacity of
the array
Ordered-------------------------indices are numbered
0,1,2,…,capacity-1
Same type of elements-------specify the element type
Direct access-------------------subscript operator[]
Multidimensional Arrays… 2DArrays
A two dimensional array is a collection of
elements placed in m rows and n
columns.
The syntax of 2-D array includes two
subscripts, of which one represents
number of rows and the other specifies the
number of columns of an array
These two subscripts are used to
reference an element in an array. For
example arr[3][4] is a 2-D array containing
Multidimensional Arrays…
2D-Arrays
Arr[0][2] is an element placed at 0th row
and 2nd column in the array. The two
dimensional array is also called a matrix.
0
1
2
3
0
12
1
-6
25
1
30
73
156
34
2
4
29
42
56
Representation of a 2-D array.
Multidimensional Arrays … 2DArrays
Consider
a table of test scores for
several different students
Row Major and Column Major
Arrangement
Rows and columns of matrix are
imaginary.
Matrix are get stored in memory linearly as
computer memory can be viewed as
consecutive units of memory.
This lead to two major arrangements in
memory:
Row
Major arrangement
Column major arrangement
Consider an example below
Row Major and Column Major
Arrangement
int a[3][4] = {
{ 12,1,-9,23}
{ 14,7,11,121}
{ 6,78,15,34}
}
Row Major and Column Major
Arrangement
Since the array elements are stored in
adjacent memory locations we can access
any elements of the array one we know
the base address (starting address) of the
array and number of rows and columns
present in the array.
Example if the base address of the array
above is 502 and we wish to refer the
element 121, then the calculation involved
would be as follows:
Row Major and Column Major
Arrangement
Row Major arrangement:
Element 121 is present at a[1][3]. Hence
location of 121 would be
= 502 + 1*4+3
= 502 + 7
= 516
In general for an array a[m][n] the address
of element a[i][j] would be:
Base address + i*n+j
Row Major and Column
Major Arrangement
Column Major arrangement:
Element 121 is present at a[1][3]. Hence
location of 121 would be:
= 502 + 3*3 + 1
= 502 + 10
= 522
Generally for an address of an array
a[m][n] the address of element a[i][j]
would be
Row Major and Column Major
Arrangement
Base address + j*m+i. Note the C++
permits only a Row Major arrangement,
whereas, Pascal uses a Column Major
Arrangement.