arrays

Post on 25-May-2015

608 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Useful for B.Sc students

TRANSCRIPT

ARRAYS IN ARRAYS IN DATASTRUCTURES USING ‘C’DATASTRUCTURES USING ‘C’

Dr. C. SarithaDr. C. Saritha

Lecturer in ElectronicsLecturer in Electronics

SSBN Degree & PG CollegeSSBN Degree & PG College

ANANTAPURANANTAPUR

OverviewOverview

What is Array?What is Array? Types of Arrays.Types of Arrays. Array operations.Array operations. Merging of arrays.Merging of arrays. Arrays of pointers.Arrays of pointers. Arrays and Polynomials.Arrays and Polynomials.

ARRAYARRAY

An array is a linear data structure. Which An array is a linear data structure. Which is a finite collection of similar data items is a finite collection of similar data items stored in successive or consecutive stored in successive or consecutive memory locations.memory locations.

For example an array may contains all For example an array may contains all integer or character elements, but not integer or character elements, but not both. both.

Each array can be accessed by using array Each array can be accessed by using array index and it is must be positive integer value index and it is must be positive integer value enclosed in square braces.enclosed in square braces.

This is starts from the numerical value 0 and This is starts from the numerical value 0 and ends at 1 less than of the array index value.ends at 1 less than of the array index value.

For example an array[n] containing n number For example an array[n] containing n number of elements are denoted by array[0],array[1],of elements are denoted by array[0],array[1],…..array[n-1]. where ‘0’ is called lower bound …..array[n-1]. where ‘0’ is called lower bound and the ‘n-1’ is called higher bound of the and the ‘n-1’ is called higher bound of the array.array.

Types of ArraysTypes of Arrays

Array can be categorized into different Array can be categorized into different types. They are types. They are

One dimensional arrayOne dimensional array Two dimensional arrayTwo dimensional array Multi dimensional arrayMulti dimensional array

One dimensional array:-One dimensional array:-

One dimensional array is also called as One dimensional array is also called as linear array. It is also represents 1-D linear array. It is also represents 1-D array.array.

the one dimensional array stores the data the one dimensional array stores the data elements in a single row or column.elements in a single row or column.

The syntax to declare a linear array is as The syntax to declare a linear array is as fallowsfallows

Syntax:Syntax: <data type> <array name> <data type> <array name> [size];[size];

Syntax for the initialization of the linear array is as fallowsSyntax for the initialization of the linear array is as fallows Syntax: Syntax: <data type><array name>[size]={values};<data type><array name>[size]={values}; Example: Example: int arr[6]={2,4,6,7,5,8}; int arr[6]={2,4,6,7,5,8}; Values Values

array name array name

array sizearray size data type data type

Memory representation of the one Memory representation of the one dimensional array:-dimensional array:-

a[0] a[1] a[2] a[3] a[4] a[5]a[0] a[1] a[2] a[3] a[4] a[5]

100 102 104 106 108 110100 102 104 106 108 110 The memory blocks a[0],a[1],a[2],a[3 ],a[4] , The memory blocks a[0],a[1],a[2],a[3 ],a[4] ,

a[5] with base addresses 1,102,104,106,108, a[5] with base addresses 1,102,104,106,108, 110 store the values 2,4,6,7,5,8 respectively.110 store the values 2,4,6,7,5,8 respectively.

22 44 66 77 55 88

Here need not to keep the track of the Here need not to keep the track of the address of the data elements of an array to address of the data elements of an array to perform any operation on data element. perform any operation on data element.

We can track the memory location of any We can track the memory location of any element of the linear array by using the element of the linear array by using the base address of the array.base address of the array.

To calculate the memory location of an To calculate the memory location of an element in an array by using formulae.element in an array by using formulae.

Loc (a[k])=base address +w(k-lower Loc (a[k])=base address +w(k-lower bound)bound)

Here k specifies the element whose Here k specifies the element whose location to find.location to find.

W means word length.W means word length. ExEx: We can find the location of the : We can find the location of the

element 5, present at a[3],base address is element 5, present at a[3],base address is 100, then100, then

loc(a[3])=100+2(3-0)loc(a[3])=100+2(3-0)

=100+6=100+6

=106.=106.

Two dimensional array:-Two dimensional array:- A two dimensional array is a collection of A two dimensional array is a collection of

elements placed in rows and columns.elements placed in rows and columns. The syntax used to declare two The syntax used to declare two

dimensional array includes two dimensional array includes two subscripts, of which one specifies the subscripts, of which one specifies the number of rows and the other specifies number of rows and the other specifies the number of columns. the number of columns.

These two subscripts are used to These two subscripts are used to reference an element in an array.reference an element in an array.

Syntax to declare the two dimensional array is as fallows Syntax to declare the two dimensional array is as fallows Syntax:Syntax: <data type> <array name> [row size] [column size]; <data type> <array name> [row size] [column size];

Syntax to initialize the two dimensional array is as fallowsSyntax to initialize the two dimensional array is as fallows Syntax:Syntax: <data type> <array name> [row size] [column <data type> <array name> [row size] [column

size]={values};size]={values};

ExampleExample:: int num[3][2]={4,3,5,6,,8,9};int num[3][2]={4,3,5,6,,8,9}; oror int num[3][2]={{4,3},{5,6},{8,9}}; int num[3][2]={{4,3},{5,6},{8,9}}; valuesvalues column size column size row size row size array name array name data typedata type

Representation of the 2-D Representation of the 2-D array:-array:- Rows Rows columnscolumns 00thth column 1st column column 1st column 00thth row row

11stst row row 22ndnd row row

a[0][0]a[0][0] a[0][1]a[0][1]

a[1][0]a[1][0] a[1][1]a[1][1]

a[2][0]a[2][0] a[2][1]a[2][1]

Memory representation of a 2-D array is different Memory representation of a 2-D array is different from the linear array.from the linear array.

in 2-D array possible two types of memory in 2-D array possible two types of memory arrangements. They are arrangements. They are

Row major arrangement Row major arrangement Column major arrangementColumn major arrangement

Memory representation of 2-D Memory representation of 2-D array:-array:-

Row major arrangement: Row major arrangement:

00thth row 1 row 1stst row 2 row 2ndnd row row

502 504 506 508 510 512 502 504 506 508 510 512 Column major arrangement:Column major arrangement:

00thth column 1 column 1stst column column

502 504 506 508 510 512 502 504 506 508 510 512

44 33 55 66 88 99

44 55 88 33 66 99

We can access any element of the array We can access any element of the array once we know the base address of the array once we know the base address of the array and number of row and columns present in and number of row and columns present in the array.the array.

In general for an array a[m][n] the address In general for an array a[m][n] the address of element a[i][j] would be,of element a[i][j] would be,

In row major arrangementIn row major arrangement

Base address+2(i*n+j)Base address+2(i*n+j) In column major arrangementIn column major arrangement

Base adress+2(j*m+i) Base adress+2(j*m+i)

Ex: we can find the location of the element 8 then

an array a[3][2] , the address of element would be a[2][0] would be

In row major arrangement loc(a[2][0])=502+2(2*2+0) =502+8 =510 In column major arrangement loc(a[2][0])=502+2(0*3+2) =502+4 =506

Multi dimensional arrays:- An array haves 2 or more subscripts, that An array haves 2 or more subscripts, that

type of array is called multi dimensional type of array is called multi dimensional array.array.

The 3 –D array is called as multidimensional The 3 –D array is called as multidimensional array this can be thought of as an array of array this can be thought of as an array of two dimensional arrays.two dimensional arrays.

Each element of a 3-D array is accessed Each element of a 3-D array is accessed using subscripts, one for each dimension.using subscripts, one for each dimension.

Syntax for the declaration and initialization as Syntax for the declaration and initialization as fallows Syntaxfallows Syntax

<data type><array name>[s1][s2][s3] <data type><array name>[s1][s2][s3] ={values}; ={values};

Ex:Ex: int a[2][3][2]={ { {2,1},{3,6},{5,3} }, { {0,9},{2,3},{5,8} } };

Memory representation of 3-D array:-

In multi dimensional arrays permits only In multi dimensional arrays permits only a row major arrangement.a row major arrangement.

00thth 2-D array 1 2-D array 1stst 2-D array 2-D array 10 12 14 16 18 20 22 24 26 28 30 3210 12 14 16 18 20 22 24 26 28 30 32

2 11 33 66 55 33 00 99 22 33 55 88

For any 3-D array a [x][y][z], the element For any 3-D array a [x][y][z], the element a[i][j][k] can be accessed as a[i][j][k] can be accessed as

Base address+2(i*y*z +j*z+ k)Base address+2(i*y*z +j*z+ k) Array a can be defined as int a [2][3][2] , Array a can be defined as int a [2][3][2] ,

element 9 is present at a[1][0][1] element 9 is present at a[1][0][1] Hence address of 9 can be obtained asHence address of 9 can be obtained as =10+2(1*3*2+0*2+1)=10+2(1*3*2+0*2+1) =10+14=10+14 =24=24

ARRAY OPERATIONSARRAY OPERATIONS

There are several operations that can be There are several operations that can be performed on an array. They areperformed on an array. They are

InsertionInsertionDeletionDeletionTraversalTraversalReversingReversingSortingSortingSearchingSearching

Insertion:Insertion:

Insertion is nothing but adding a new Insertion is nothing but adding a new element to an array.element to an array.

Here through a loop, we have shifted the Here through a loop, we have shifted the numbers, from the specified position, one numbers, from the specified position, one place to the right of their existing position.place to the right of their existing position.

Then we have placed the new number at Then we have placed the new number at the vacant place.the vacant place.

Ex:Ex:

for (i=4;i>= 2;i++)for (i=4;i>= 2;i++)

{{

a[i]=a[i-1];a[i]=a[i-1];

}}

a[i]=num;a[i]=num;

Before insertion :Before insertion :

0 1 2 3 40 1 2 3 4 After insertion:After insertion:

0 1 2 3 4 0 1 2 3 4 Fig:Fig: shifting the elements to the right while shifting the elements to the right while

Insuring an element at 2Insuring an element at 2ndnd position position

1111 1313 1414 4 4 00

1111 1212 1313 1414 44

Deletion:Deletion:

Deletion is nothing but process of remove Deletion is nothing but process of remove an element from the array.an element from the array.

Here we have shifted the numbers of Here we have shifted the numbers of placed after the position from where placed after the position from where the number is to be deleted, one place to the number is to be deleted, one place to the left of their existing positions.the left of their existing positions.

The place that is vacant after deletion of The place that is vacant after deletion of an element is filled with ‘0’.an element is filled with ‘0’.

ExEx::

for (i=3;i<5;i++)for (i=3;i<5;i++)

{{

a[i-1]=a[i];a[i-1]=a[i];

} }

a[i-1]=0;a[i-1]=0;

Before deletion: Before deletion:

0 1 2 3 40 1 2 3 4 After deletion:After deletion:

0 1 2 3 40 1 2 3 4 Fig:Fig: shifting the elements to the left while shifting the elements to the left while

deleting 3deleting 3rdrd element in an array. element in an array.

1111 1212 1313 1414 44

1111 1313 1414 44 00

Traversal:Traversal: Traversal is nothing but display the Traversal is nothing but display the

elements in the array.elements in the array. Ex:Ex: for (i=0;i<5;i++)for (i=0;i<5;i++) {{ Printf (“%d\t”, a[i]);Printf (“%d\t”, a[i]); }}

1111 1212 1414 44 00

Reversing:Reversing: This is the process of reversing the elements This is the process of reversing the elements

in the array by swapping the elements.in the array by swapping the elements. Here swapping should be done only half times Here swapping should be done only half times

of the array size.of the array size. Ex:Ex: for (i=0;i<5/2;i++)for (i=0;i<5/2;i++) { { int temp=a[i];int temp=a[i]; a[i]=a[5-1-1];a[i]=a[5-1-1]; a[5-1-i]=temp;a[5-1-i]=temp; }}

Before swapping:Before swapping:

0 1 2 3 40 1 2 3 4 After swapping:After swapping:

0 1 2 3 40 1 2 3 4Fig:Fig: swapping of elements while reversing an array. swapping of elements while reversing an array.

1111 1212 1313 1414 00

00 1414 1313 1212 1111

Sorting:Sorting:

Sorting means arranging a set of data Sorting means arranging a set of data in some order like ascending or in some order like ascending or descending order.descending order.

Ex:Ex: for (i=0;i<5;i++) for (i=0;i<5;i++) {{ for (j=i+1;j<5;j++)for (j=i+1;j<5;j++) {{ if (a[i]>a[j])if (a[i]>a[j]) {{ temp=a[i];temp=a[i]; a[i]=a[j];a[i]=a[j]; a[j]=temp;a[j]=temp; } } }} } }

1717 2525 1313 22 11

1 1 22 1313 1717 2525

Before sorting:Before sorting:

0 1 2 3 40 1 2 3 4 After sorting:After sorting:

0 1 2 3 40 1 2 3 4

Searching:Searching:

Searching is the process of finding the Searching is the process of finding the location of an element with a given location of an element with a given element in a list..element in a list..

Here searching is starts from 0Here searching is starts from 0thth element element and continue the process until the given and continue the process until the given specified number is found or end of list is specified number is found or end of list is reached.reached.

Ex:Ex: for (i=0;i<5;i++)for (i=0;i<5;i++) {{ if (a[i]==num)if (a[i]==num) {{ Printf(“\n element %d is present at %dPrintf(“\n element %d is present at %dth th

position”,num,i+1);position”,num,i+1); return;return;}}if (i==5)}}if (i==5)Printf (“the element %d is not present in the array Printf (“the element %d is not present in the array

”,num);”,num);

1111 1212 1313 1414 44 1313

1111 1212 1313 1414 44 1313

13131111 1212 1313 1414 44

Merging of arraysMerging of arrays Merging means combining two sorted list Merging means combining two sorted list

into one sorted list.into one sorted list. Merging of arrays involves two steps:Merging of arrays involves two steps:

They areThey are sorting the arrays that are to be sorting the arrays that are to be

merged.merged.Adding the sorted elements of both Adding the sorted elements of both

the arrays a to a new array in sorted the arrays a to a new array in sorted order.order.

Ex:Ex: Before merging:Before merging:

11stst array 2 array 2ndnd array array

After merging:After merging:

22 88 1111

11 22 33 88 1111 1313

11 33 1313

Arrays of pointersArrays of pointers

A pointer variable always contains an A pointer variable always contains an address.address.

An array of pointer would be nothing but An array of pointer would be nothing but a collection of addresses.a collection of addresses.

The address present in an array of pointer The address present in an array of pointer can be address of isolated variables or can be address of isolated variables or even the address of other variables.even the address of other variables.

An array of pointers widely used for An array of pointers widely used for stoning several strings in the array.stoning several strings in the array.

The rules that apply to an ordinary array The rules that apply to an ordinary array also apply to an array of pointer as well.also apply to an array of pointer as well.

The elements of an array of pointer are The elements of an array of pointer are stored in the memory just like the elements stored in the memory just like the elements of any other kind of array.of any other kind of array.

Memory representation of the array of Memory representation of the array of integers and an array of pointers integers and an array of pointers respectively.respectively.

Fig1Fig1:Memory representation of an array of :Memory representation of an array of integers and integer variables I and j.integers and integer variables I and j.

a[0] a[1] a[2] a[3] i j a[0] a[1] a[2] a[3] i j

100 102 104 106 200 312 100 102 104 106 200 312 Fig2:Fig2:Memory representation of an array of Memory representation of an array of

pointers. pointers. b[0] b[1] b[2] b[3] b[4] b[5]b[0] b[1] b[2] b[3] b[4] b[5]

8112 8114 8116 8118 8120 8122 8112 8114 8116 8118 8120 8122

33 44 55 66

100100 102102 104104 106106 200200 312312

11 99

Arrays and polynomialsArrays and polynomials

Polynomials like 5xPolynomials like 5x44+2 x+2 x33+7x+7x22+10x-8 +10x-8 can be maintained using an array.can be maintained using an array.

To achieve each element of the array To achieve each element of the array should have two values coefficient and should have two values coefficient and exponent.exponent.

While maintaining the polynomial it is While maintaining the polynomial it is assumes that the exponent of each assumes that the exponent of each successive term is less than that of the successive term is less than that of the previous term.previous term.

Once we build an array to represent Once we build an array to represent polynomial we can use such an array to polynomial we can use such an array to perform common polynomial operations perform common polynomial operations like addition and multiplication.like addition and multiplication.

Addition of two polynomialsAddition of two polynomials::

Here if the exponents of the 2 terms Here if the exponents of the 2 terms beinf compared are equal then their beinf compared are equal then their coefficients are added and the result is coefficients are added and the result is stored in 3stored in 3rdrd polynomial. polynomial.

If the exponents of the 2 terms are not If the exponents of the 2 terms are not equal then the term with the bigger equal then the term with the bigger exponent is added to the 3 rd exponent is added to the 3 rd polynomial.polynomial.

If the term with an exponent is present in If the term with an exponent is present in only 1 of the 2 polynomials then that only 1 of the 2 polynomials then that term is added as it is to the 3term is added as it is to the 3rdrd polynomial.polynomial.

Ex:Ex: 11stst polynomial is 2x polynomial is 2x66+3x+3x55+5x+5x22 22ndnd polynomial is 1x polynomial is 1x66+5x+5x22+1x+2+1x+2 Resultant polynomial isResultant polynomial is 3x3x66+3x+3x55+10x+10x22+1x+2+1x+2

Multiplication of 2 polynomials:Multiplication of 2 polynomials:

Here each term of the coefficient of the 2Here each term of the coefficient of the 2ndnd polynomial is multiplied with each term of the polynomial is multiplied with each term of the coefficient of the 1coefficient of the 1stst polynomial. polynomial.

Each term exponent of the 2Each term exponent of the 2ndnd polynomial is polynomial is added to the each tem of the 1added to the each tem of the 1stst polynomial. polynomial.

Adding the all terms and this equations placed Adding the all terms and this equations placed to the resultant polynomial.to the resultant polynomial.

Ex:Ex: 11stst polynomial is polynomial is

1x1x44+2x+2x33+2x+2x22+2x+2x 22ndnd polynomial is polynomial is

2x2x33+3x+3x22+4x+4x Resultant polynomial isResultant polynomial is

2x2x77+7x+7x66+14x+14x55+18x+18x44+14x+14x33+8x+8x22

THE ENDTHE END

top related