SlideShare a Scribd company logo
Pune Vidyarthi Griha’s
COLLEGE OF ENGINEERING, NASHIK – 3.
“Linear Data Structure using
Squential Organization”
By
Prof. Anand N. Gharu
(Assistant Professor)
PVGCOE Computer Dept.
10 July 2019
.
1
SEQUENTIAL ORGANIZATION
• Definition :
“In computer science, sequential access means that a
group of elements (such as data in a memory array or a disk file or
on magnetic tape data storage) is accessed in a predetermined,
ordered sequence.Sequential access is sometimes the only way of
accessing the data, for example if it is on a tape.”
PROF. ANAND GHARU
2
Linear Data Structure Using
Sequential Organization
• Definition :
“The data structure where data items are organized
sequentially or linearly one after another is called as
Linear Data Structure”
A linear data structuretraverses the data elements
sequentially, in which only one data element can directly
be reached. Ex: Arrays, Linked Lists.
PROF. ANAND GHARU
3
Array
• Definition :
“An array is a finite ordered collection of homogeneous
data elements which provides direct access (or random
access)to any of its elements.
 An array as a data structure is defined as a set of pairs
(index,value) such that with each index a value is
associated.
• index — indicates the location of an element in an
array.
• value - indicates the actual value of that data element.
Declaration of an array in ‘C++’:
• int Array_A[20];
”
PROF. ANAND GHARU
4
Array
• Array Representation
• Arrays can be declared in various ways in different languages.
For illustration, let's take C array declaration.
• Arrays can be declared in various ways in different languages. For
illustration, let's take C array declaration.
• As per the above illustration, following are the important points to be
considered.
PROF. ANAND GHARU
5
Array
• Array Representation
• Index starts with 0.
• Array length is 10 which means it can store 10 elements.
• Each element can be accessed via its index. For example, we
can fetch an element at index 6 as 9.
• Basic Operations
• Following are the basic operations supported by an array.
• Traverse − print all the array elements one by one.
• Insertion − Adds an element at the given index.
• Deletion − Deletes an element at the given index.
• Search − Searches an element using the given index or by the
value.
• Update − Updates an element at the given index.
PROF. ANAND GHARU
6
X(Base)
X+1
7
X+2
X+(n-1)
Array A
Fig 2.1 Memory Representation
Memory Representation and Calculation
PROF. ANAND GHARU 7
 The address of the ith element is calculated by the
following formula
(Base address) + (offset of the ith element from base
address)
Here, base address is the address of the first element
where array storage starts.
8
ADDRESS CALCULATION
PROF. ANAND GHARU 8
2
• ADT is useful tool for specifying the logical properties of
a data type.
• A data type is a collection of values & the set of
operations on the values.
• ADT refers to the mathematical concept that defines the
data type.
• ADT is not concerned with implementation but is useful
in making use of data type.
Abstract Data Type
• Arrays are stored in consecutive set of memory
locations.
• Array can be thought of as set of index and values.
• For each index which is defined there is a value
associated with that index.
• There are two operations permitted on array data
structure .retrieve and store
ADT for an array
• CREATE()-produces empty array.
• RETRIVE(array,index)->value
Takes as input array and index and either returns
appropriate value or an error.
• STORE(array,index,value)-array used to enter new index
value pairs.
ADT for an array
Representation and analysis
Type variable_name[size]
Operations with arrays:
Copy
Delete
Insert
Search
Sort
Merging of sorting arrays.
Introduction to arrays
• #include <stdio.h>
•
• int main()
• {
• int a[100],b[100] position, c n;
•
• printf("Enter number of elements in arrayn");
• scanf("%d", &n);
•
• printf("Enter %d elementsn", n);
•
• for ( c = 0 ; c < n ; c++ )
• scanf("%d", &a[c]);
• printf("Enter %d elementsn", n);
•
• for( c = 0 ; c < n - 1 ; c++ )
• printf("%dn", a[c]);
• //Coping the element of array a to b
• for( c = 0 ; c < n - 1 ; c++ )
• {
• b[c]=a[c];
• }
• }
•
• return 0;
Copy operation
Output•
•
• Enter number of elements in array -4
•
• Enter 4 elements
•
1
• 2
• 3
• 4
• displaying array a
• 1
• 2
• 3
• 4
• displaying array b
• 1
• 2
• 3
• 4
•
• #include <stdio.h>
•
• int main()
• {
• int array[100], position, i, n;
•
• printf("Enter number of elements in arrayn");
• scanf("%d", &n);
•
• printf("Enter %d elementsn", n);
•
• for ( i = 0 ; i < n ; i++ )
• scanf("%d", &array[i]);
•
• printf("Enter the location where you wish to delete elementn");
• scanf("%d", &position);
•
• for ( i = position ; i < n; i++ )
o {
• array[i] = array[i+1];
• }
• printf("Resultant array isn");
•
• for( i = 0 ; i < n-1 ; i++ )
• printf("%dn", array[i]);
• return 0;
• }
Delete operation
Delete operation
#include <stdio.h>
int main()
{
int array[100], position, i, n, value;
printf("Enter number of elements in arrayn");
scanf("%d", &n);
printf("Enter %d elementsn", n);
for (i= 0;i< n; i++)
scanf("%d", &array[i]);
printf("Enter the location where you wish to insert an elementn");
scanf("%d", &position);
printf("Enter the value to insertn");
scanf("%d", &value);
for (i = n - 1; i >= position ; i--)
array[i+1] = array[i];
array[position] = value;
printf("Resultant array isn");
for (i= 0; i <= n; i++)
printf("%dn", array[i]);
return 0;
Inserting an element
Inserting an element
Int a[10]={5,4,3,2,1}
for(i=0;i<n-1;i++)
{
for(j=0;j<=n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
Sort an array
Reverse array
#include <stdio.h>
int main() {
int array[100], n, i, temp, end;
scanf("%d", &n);
end = n - 1;
for (i = 0; i < n; i++) {
scanf("%d", &array[i]);
}
for (i= 0; < n/2; i++)
{
temp = array[i];
array[i] = array[end];
array[end] = temp;
end--;
}
printf("Reversed array elements are:n");
for ( i= 0; i < n; i++) {
printf("%dn", array[i]);
}
return 0;
}
Sort element using array
int a[10]={5,4,3,2,1}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
Two-dimensional Arrays
in C
• multidimensional array is the two-dimensional
array
• type arrayName [ x ][ y ];
Two-dimensional Arrays
in C
m-no of rows
n-no of columns
Printf(“n Enter the rows and columns”);
Scanf(%d %d”,&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
Printf(“n Enter the value of(%d)(%d)=“,i,j);
Scanf(“%d”,&a[i][j]);
}
}
for(i=0;i<m;i++)
{
Printf(“n”);
for(j=0;j<n;j++)
{
printf(“%d”,&a[i][j]);
}
}
 Formally ADT is a collection of domain, operations,and
axioms (or rules)
 For defining an array as an ADT, we have to define its very
basic operations or functions that can be performed on it
 The basic operations of arrays are creation of an array,
storing an element, accessing an element, and traversing
the array
2
6
ARRAY AS AN ADT
PROF. ANAND GHARU 26
 List of operation on Array :-
 1. Inserting an element into an array
 2. deleting element from array
 3. searching an element from array
 4. sorting the array element
27PROF. ANAND GHARU 27
N -dimensional Arrays
PROF. ANAND GHARU 28
PROF. ANAND GHARU 29
Row-Major representation of 2Darray
PROF. ANAND GHARU 30
Three dimensions row-majorarrangement
(i*m2*m3) elements
A[0][m2][m3]
A[1][m2][m3] A[i][m2][m3] A[m1-1][m2]
PROF. ANAND GHARU 31
 The address of A[i][j][k] is computedas
 Addrof A[i][j][k] = X + i * m2 * m3 + j * m3 + k
 By generalizing this we get the address of A[i1][i2][i3] … [ in] in n-
dimensional array A[m1][m2][m3]. ….[ mn]
 Consider the address of A [0][0][0]…..[0] is X then the address of A
[i][0][0]….[0] = X + (i1 * m2 * m3 * - - -- - * mn )and
 Address of A [i1][i2] …. [0] = X + (i1 * m2 * m3 * - -- - *mn ) + (i2 *
m3 * m4 *--- * mn)
 Continuing in a similar way, address of A[i1][i2][i3]- - - -[ in] willbe
 Address of A[i1][i2][i3]----[ in] = X + (i1 * m2 * m3 * - - -- - * mn) +
(i2 * m3 * m4 *--- - - * mn )+(i3 * m4 * m5--- * mn + (i4 * m5 * m6--
- - - * mn +…….+ in =
PROF. ANAND GHARU 32
Ex-Arrays
#include <stdio.h>
int main ()
{
int a[10],i,size;
printf(“nhow many no of elements u want to scan”);
scanf(“%d”,&size);
printf(“nEnter the elements in the array”);
for(i=0;i<size;i++)
{
scanf(“%d”,&a[i]);
} //end for
for(i=0;i<size;i++)
{
printf(“The array is %d”,a[i]); //Displaying Array
} //end for
return 0;
Output will be
1
2
3
4
5
Multi-dimensional Arrays
in C
• type name[size1][size2]...[sizeN];
Two-dimensional Arrays
in C
• multidimensional array is the two-dimensional array
• type arrayName [ x ][ y ];
Two-dimensional Arrays
in C
HOW TO INITIALIZE 2-D
ARRAY IN PROGRAM
• Initializing Two-Dimensional Arrays
int a[3][4] = { {0, 1, 2, 3} , /* initializers for
{4, 5, 6, 7} ,
{8, 9, 10, 11} /* initializers for row
/* initializers for row indexed by 2 */ };
• Accessing Two-Dimensional Array Elements
int val = a[2][3];
Three-dimensional
Arrays in C
• For example, the following declaration creates a three
dimensional integer array −
• Ex-int threedim[5][10][4];
 Arrays support various operations such as
traversal, sorting, searching, insertion,
deletion, merging, block movement, etc.
41
Insertion of an element into an array
Deleting anelement
Memory Representation of Two-DimensionalArrays
THE CLASS ARRAY
PROF. ANAND GHARU 41
Columns
Col1 col2 .... coln
A11 A12 .... A1n
A11 A12 .... A1n
: : :
Am1 Am2 .... Amn
m*n
Rows R1
R2
Rm
1 2 3 4
5 6 7 8
42
9 10 11 12
Matrix M =
PROF. ANAND GHARU 42
 Row-major Representation
 Column-major Representation
Row-major representation
PROF. ANAND GHARU 43
Row-major representation
In row-major representation, the elements of Matrix are
stored row-wise, i.e., elements of 1st row, 2nd row, 3rd row,
and so on till mth row
1 2 3 4 5 6 7 8 9 10 11 12
(0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) (2,0) (2,1) (2,2) (2,3)
Row1 Row2 Row3
PROF. ANAND GHARU 44
Row major
arrangement
Row 0
Row 1
Row m-1
Row 0
Row 1
Row
m-1
Memory Location
Row-major arrangement in memory , in row major representation
PROF. ANAND GHARU 45
 The address of the element of the ith row and the jth column for matrix of
size m x n can be calculated as:
Addr(A[i][j]) = Base Address+ Offset = Base Address + (number
of rows placed before ith row * size of row) * (Size of Element) +
(number of elements placed before in jth element in ith row)*
size of element
 As row indexing starts from 0, i indicate number of rows before the
ith row hereand similarly for j.
For Element Size = 1 the address is
Address of A[i][j]= Base + (i * n ) +j
PROF. ANAND GHARU 46
In general,
Addr[i][j] = ((i–LB1) * (UB2 – LB2 + 1) * size) + ((j– LB2) * size)
 where number of rows placed before ith row = (i –LB1)
 where LB1 is the lower bound of the firstdimension.
Size of row = (number of elements in row) * (size of
element)Memory Locations
The number of elements in arow = (UB2 – LB2 + 1)
 where UB2 and LB2 are upper and lower bounds of the
second dimension.
PROF. ANAND GHARU 47
Column-majorrepresentation
In column-major representation m × n elements of two- dimensional
array A are stored as one single row of columns.
 The elements are stored in the memory as a sequence as first the
elements of column 1, then elements of column 2 and so on till elements
of column n
PROF. ANAND GHARU 48
Column-major arrangement
col1 col2
Col
n-1
Col
0
Col 1
Col 2
…
Memory Location
Column-major arrangement in memory , in column major representation
PROF. ANAND GHARU 49
The address of A[i][j] is computedas
 Addr(A[i][j]) = Base Address+ Offset= Base Address + (number of
columns placed before jth column * size of column) * (Size of
Element) + (number of elements placed before in ith element in ith
row)* size of element
For Element_Size = 1 the addressis
 Address of A[i][j] for column major arrangement = Base + (j *
m ) + I
In general, for column-major arrangement; address of the
element of the jth row and the jth column therefore is
 Addr (A[i][j] = ((j – LB2) * (UB1 – LB1 + 1) * size) + ((i –LB1) * size)
PROF. ANAND GHARU 50
Example 2.1: Consider an integer array, int A[3][4] inC++. If
the base address is 1050, find the address of the element A[2]
[3] with row-major and column-major representation of the
array.
For C++, lower bound of index is 0 and we have m=3, n=4,
and Base= 1050. Let us compute address of element A [2][3]
using the address computationformula
1. Row-Major Representation:
Address of A [2][3] = Base + (i * n ) +j
= 1050 + (2 * 4) + 3
= 1061
PROF. ANAND GHARU 51
1 2 3 4 5 6 7 8 9 10 11 12
(0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) (2,0) (2,1) (2,2) (2,3)
Row1 Row2 Row3
Row-Major Representation of 2-D
array
PROF. ANAND GHARU 52
2. Column-Major Representation:
Address of A [2][3] = Base + (j * m ) +i
= 1050 + (3 * 3) + 2
= 1050 + 11
= 1061
 Here the address of the element is same because it is the
last member of last row and lastcolumn.
PROF. ANAND GHARU 53
1 2 3 4 5 6 7 8 9 10 11 12
(0,0) (1,0) (2,0) (0,1) (1,1) (2,1) (0,2) (1,2) (2,2) (0,3) (1,3) (2,3)
Col 1 Col 2 Col 3 Col 4
Column-Major Representation of 2-D
array
PROF. ANAND GHARU 54
Characteristics of array
An array is a finite ordered collection of homogeneous data
elements.
In array, successive elements of list are stored at a fixed
distance apart.
Array is defined as set of pairs-( index and value).
Array allows random access to any element
Inarray, insertion and deletion of element in
between positions
• requires data movement.
Array provides static allocation, which means space
allocation done once during compile time, can not be
changed run time.
55PROF. ANAND GHARU 55
Advantage of Array Data Structure
Arrays permit efficient random access in constant time 0(1).
Arrays are most appropriate for storing a fixed amount of data
and also for high frequency of data retrievals as data can be
accessed directly.
Wherever there is a direct mapping between the elements and
there positions, arrays are the most suitable data structures.
Ordered lists such as polynomials are most efficiently
handled using arrays.
Arrays are useful to form the basis for several more complex
data structures, such as heaps, and hash tables and can be
used to represent strings, stacks andqueues.
56PROF. ANAND GHARU 56
Disadvantage of Array Data
Structure
Arrays provide static memory management. Hence during
execution the size can neither be grown nor shrunk.
Array is inefficient when often data is to inserted or deleted
as inserting and deleting an element in array needs a lot of
data movement.
Hence array is inefficient for the applications, which very
often need insert and delete operations in between.
57PROF. ANAND GHARU 57
Applications of Arrays
Although useful in their own right, arrays also form the
basis for several more complex data structures, such as
heaps, hash tables and can be used to represent strings,
stacks and queues.
All these applications benefit from the compactness and
direct access benefits ofarrays.
Two-dimensional data when represented as Matrix and
matrix operations.
58PROF. ANAND GHARU 58
CONCEPT OF ORDERED LIST
Ordered list is the most common and frequently used data
object
Linear elements of an ordered list are related with each
other in a particular order or sequence
Following are some examples of theordered list.
 1, 3,5,7,9,11,13,15
 January, February, March, April, May, June, July,
August, September,
 October, November, December
 Red, Blue, Green, Black, Yellow
PROF. ANAND GHARU 59
There are many basic operations that can be
performed on the ordered list asfollows:
 Finding the length of the list
 Traverse the list from left to right or from
right to left
 Access the ith element in thelist
the ith Update (Overwrite) the value of
position
 Insert an element at the ith location
 Delete an element at the ith position
PROF. ANAND GHARU 60
SINGLE VARIABLE POLYNOMIAL
PROF. ANAND GHARU 61
Single Variable Polynomial
 Representation Using Arrays
 Array of Structures
 Polynomial Evaluation
 Polynomial Addition
 Multiplication of TwoPolynomials
PROF. ANAND GHARU 62
Polynomial Representation
on array
PROF. ANAND GHARU 63
Polynomial Representaiton
PROF. ANAND GHARU 64
Polynomial as an ADT, the basic operations are as
follows:
Creation of a polynomial
Addition of two polynomials
Subtraction of two polynomials
Multiplication of twopolynomials
Polynomial evaluation
PROF. ANAND GHARU 65
Polynomial by using Array
PROF. ANAND GHARU 66
Polynomial by using Array
PROF. ANAND GHARU 67
 Structure is better than array for Polynomial:
 Such representation by an array is both time and space efficient when
polynomial is not a sparse one such as polynomial P(x) of degree 3 where
P(x)= 3x3+x2–2x+5.
 But when polynomial is sparse such as in worst case a polynomial as
A(x)= x99 + 78 for degree of n =100, then only two locations out of 101
would be used.
 In such cases it is better to store polynomial as pairs of coefficient and
exponent. We may go for two different arrays for each or a structure
having two members as two arrays for each of coeff. and Exp or an array
of structure that consists of two data members coefficient and exponent.
PROF. ANAND GHARU 68
Polynomial by using
structure
Let us go for structure having two data members
coefficient and exponent and itsarray.
PROF. ANAND GHARU 69
SPARSE MATRIX
In many situations, matrix size is very large but out of it, most of
the elements are zeros (not necessarily always zeros).
And only a small fraction of the matrix is actually used. A matrix of
such type is called a sparse matrix,
PROF. ANAND GHARU 70
SPARSE MATRIX
PROF. ANAND GHARU 71
Sparse Logical Matrix
PROF. ANAND GHARU 72
Sparse matrix and itsrepresentation
PROF. ANAND GHARU 73
Transpose Of Sparse Matrix
Simple Transpose
Fast Transpose
PROF. ANAND GHARU 74
Transpose Of Sparse Matrix
PROF. ANAND GHARU 75
Transpose Of Sparse Matrix
PROF. ANAND GHARU 76
Time complexity of manual technique is O(mn).
PROF. ANAND GHARU 77
Sparse matrix transpose
PROF. ANAND GHARU 78
Time complexity will be O (n. T)
= O (n . mn)
= O (mn2)
which is worst than the conventional transpose with time
complexity O (mn)
Simple Sparse matrixtranspose
PROF. ANAND GHARU 79
Fast Sparse matrix transpose
In worst case, i.e. T= m × n (non-zero elements) the magnitude
becomes O (n +mn) = O (mn) which is the same as 2-D
transpose
However the constant factor associated with fast transpose is
quite high
When T is sufficiently small, compared to its maximum of m .
n, fast transpose will workfaster
PROF. ANAND GHARU 80
It is usually formed from the character set of the
programming language
The value n is the length of the character string S where n ³
0
 If n = 0 then S is called a null string or empty string
String Manipulation
Using Array
PROF. ANAND GHARU 81
Basically a string is stored as a sequence of characters in
one- dimensional character array say A.
char A[10] ="STRING" ;
Each string is terminated by a special character that is null
character ‘0’.
This null character indicates the end or termination of each
string.
82PROF. ANAND GHARU 82
There are various operations that can be
performed on thestring:
Tofind the length of astring
Toconcatenate two strings
Tocopy astring
Toreverse a string
String compare
Palindrome check
Torecognize a substring.
83PROF. ANAND GHARU 83
PROF. ANAND GHARU 84
Write a program to reverse string.
#include<iostream>
#include<string.h>
using namespace std;
int main ()
{
char str[50], temp;
int i, j;
cout << "Enter a string : ";
Cin>>str;
j = strlen(str) - 1;
for (i = 0; i < j; i++,j--)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
cout << "nReverse string : " << str;
return 0;
}
PROF. ANAND GHARU 85
/* C++ Program - Concatenate String using
inbuilt function */
#include<iostream.h>
#include<string.h>
void main()
{
clrscr();
char str1[50], str2[50];
cout<<"Enter first string : ";
Cin>>str1;
cout<<"Enter second string : ";
cin>>str2;
strcat(str1, str2);
cout<<"String after concatenation is "<<str1;
getch();
}
PROF. ANAND GHARU 86
/* C++ Program - Concatenate String without using inbuilt function */
#include <iostream>
using namespace std;
int main()
{
char str1[100] = "Hi...";
char str2[100] = "How are you";
int i,j;
cout<<"String 1: "<<str1<<endl;
cout<<"String 2: "<<str2<<endl;
for(i = 0; str1[i] != '0'; ++i);
j=0;
while(str2[j] != '0')
{
str1[i] = str2[j];
i++; j++;
}
str1[i] = '0';
cout<<"String after concatenation: "<<str1;
return 0;
}
PROF. ANAND GHARU 87
To get the length of a C-string
string, strlen() function is used.
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[] = "C++ Programming is
awesome";
// you can also use str.length()
cout << "String Length = " <<
strlen(str);
return 0;
}
Find length of string without using strlen
function
#include<iostream>
using namespace std;
int main()
{
char str[] = "Apple";
int count = 0;
while (str[count] != '0')
count++;
cout<<"The string is "<<str<<endl; cout
<<"The length of the string is
"<<count<<endl;
return 0;
}
PROF. ANAND GHARU 88
/* C++ Program - Compare Two String */
#include<iostream.h>
#include<string.h>
void main()
{
clrscr();
char str1[100], str2[100];
cout<<"Enter first string : ";
gets(str1);
cout<<"Enter second string : ";
gets(str2);
if(strcmp(str1, str2)==0)
{
cout<<"Both the strings are equal";
}
else
{ cout<<"Both the strings are not equal";
} getch(); }
PROF. ANAND GHARU 89
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char str1[20], str2[20];
int i, j, len = 0, flag = 0;
cout << "Enter the string : ";
gets(str1);
len = strlen(str1) - 1;
for (i = len, j = 0; i >= 0 ; i--, j++)
str2[j] = str1[i];
if (strcmp(str1, str2))
flag = 1;
if (flag == 1)
cout << str1 << " is not a palindrome";
else
cout << str1 << " is a palindrome";
return 0;
}
String is palindrom or not
PROF. ANAND GHARU 90
SIMPLE TRANSPOSE OF MATRIX IN C++
#include <iostream>
using namespace std;
int main()
{
int a[10][10], trans[10][10], r, c, i, j;
cout << "Enter rows and columns of matrix: ";
cin >> r >> c;// Storing element of matrix
cout << endl << "Enter elements of matrix: " <<
endl;
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{
cout << "Enter elements a" << i + 1 << j + 1 << ":
";
cin >> a[i][j];
} // Displaying the matrix a[][]
cout << endl << "Entered Matrix: " << endl;
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{ cout << " " << a[i][j];
if(j == c - 1)
cout << endl << endl; }
// Finding transpose of matrix a[][] and storing it
infor(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{
trans[j][i]=a[i][j];
}
// Displaying the transpose
cout << endl << "Transpose of Matrix: " << endl;
for(i = 0; i < c; ++i)
for(j = 0; j < r; ++j)
{
cout << " " << trans[i][j];
if(j == r - 1)
cout << endl << endl;
}
return 0; }
PROF. ANAND GHARU 91
MULTIPLICATION OF TWO
POLYNOMIAL
#include<math.h>
#include<stdio.h>
#include<conio.h>
#define MAX 17
void init(int p[]);
void read(int p[]);
void print(int p[]);
void add(int p1[],int p2[],int p3[]);
void multiply(int p1[],int p2[],int p3[]);
/*Polynomial is stored in an array, p[i] gives coefficient
of x^i .
a polynomial 3x^2 + 12x^4 will be represented as
(0,0,3,0,12,0,0,….)
*/
void main()
{
int p1[MAX],p2[MAX],p3[MAX];
int option;
do
{
printf(“nn1 : create 1’st polynomial”);
printf(“n2 : create 2’nd polynomial”);
printf(“n3 : Add polynomials”);
printf(“n4 : Multiply polynomials”);
printf(“n5 : Quit”);
printf(“nEnter your choice :”);
scanf(“%d”,&option);
switch(option)
{
case 1:read(p1);break;
case 2:read(p2);break;
case 3:add(p1,p2,p3);
printf(“n1’st polynomial -> “);
print(p1);
printf(“n2’nd polynomial -> “);
print(p2);
printf(“n Sum = “);
print(p3);
break;
case 4:multiply(p1,p2,p3);
printf(“n1’st polynomial -> “);
print(p1);
printf(“n2’nd polynomial -> “);
print(p2);
printf(“n Product = “);
print(p3);
break;
}
}while(option!=5);
}
PROF. ANAND GHARU 92
MULTIPLICATION OF TWO
POLYNOMIAL
void read(int p[])
{
int n, i, power,coeff;
init(p);
printf(“n Enter number of terms :”);
scanf(“%d”,&n);
/* read n terms */
for (i=0;i<n;i++)
{ printf(“nenter a term(power coeff.)”);
scanf(“%d%d”,&power,&coeff);
p[power]=coeff;
}
}
void print(int p[])
{
int i;
for(i=0;i<MAX;i++)
if(p[i]!=0)
printf(“%dX^%d “,p[i],i);
}
void add(int p1[], int p2[], int p3[])
{
int i;
for(i=0;i<MAX;i++)
p3[i]=p1[i]+p2[i];
}
void multiply(int p1[], int p2[], int p3[])
{
int i,j;
init(p3);
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
p3[i+j]=p3[i+j]+p1[i]*p2[j];
}
void init(int p[])
{
int i;
for(i=0;i<MAX;i++)
p[i]=0;
}
*******END******
PROF. ANAND GHARU 93
FIND SIMPLE TRANSPOSE OF
MATRIX
#include <iostream>
using namespace std;
int main()
{
int a[10][10], trans[10][10], r, c, i, j;
cout << "Enter rows and columns of matrix: ";
cin >> r >> c;
//Storing element of matrix enter by user in array a[][].
cout << endl << "Enter elements of matrix: " << endl;
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{
cout << "Enter elements a" << i + 1 << j + 1 << ":
";
cin >> a[i][j];
}
// Displaying the matrix a[][]
cout << endl << "Entered Matrix: " << endl;
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{
cout << " " << a[i][j];
if(j == c - 1)
cout << endl << endl;
}
// Finding transpose of matrix a[][] and storing it
in array trans[][].
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{
trans[j][i]=a[i][j];
}
PROF. ANAND GHARU 94
FIND SIMPLE TRANSPOSE OF
MATRIX
// Displaying the transpose,i.e, Displaying array
trans[][].
cout << endl << "Transpose of Matrix: " <<
endl;
for(i = 0; i < c; ++i)
for(j = 0; j < r; ++j)
{
cout << " " << trans[i][j];
if(j == r - 1)
cout << endl << endl;
}
return 0;
}
95
THANK YOU !!!!!
Blog : anandgharu.wordpress.com
gharu.anand@gmail.com
PROF. ANAND GHARU 95

More Related Content

PDF
Arrays in python
PDF
Arrays in python
PDF
Basic data structures in python
PPTX
Python array
PDF
Arrays In Python | Python Array Operations | Edureka
PDF
Pandas Cheat Sheet
PDF
Python programming : Arrays
PDF
Python Pandas for Data Science cheatsheet
Arrays in python
Arrays in python
Basic data structures in python
Python array
Arrays In Python | Python Array Operations | Edureka
Pandas Cheat Sheet
Python programming : Arrays
Python Pandas for Data Science cheatsheet

What's hot (20)

PDF
Numpy python cheat_sheet
PPT
Algorithm
PPT
Array in Java
PDF
Pandas pythonfordatascience
PPTX
PPTX
Set data structure
PDF
Cheat Sheet for Machine Learning in Python: Scikit-learn
PDF
Scientific Computing with Python - NumPy | WeiYuan
PDF
Scikit-learn Cheatsheet-Python
PDF
9 python data structure-2
PPTX
Arrays in java language
PDF
Algorithms python arraylistmatrix
PPT
Priority queues
PPTX
Array Introduction One-dimensional array Multidimensional array
PPTX
Array lecture
PDF
An Introduction to Programming in Java: Arrays
PPTX
Arrays in java
PPTX
Arrays in Java
Numpy python cheat_sheet
Algorithm
Array in Java
Pandas pythonfordatascience
Set data structure
Cheat Sheet for Machine Learning in Python: Scikit-learn
Scientific Computing with Python - NumPy | WeiYuan
Scikit-learn Cheatsheet-Python
9 python data structure-2
Arrays in java language
Algorithms python arraylistmatrix
Priority queues
Array Introduction One-dimensional array Multidimensional array
Array lecture
An Introduction to Programming in Java: Arrays
Arrays in java
Arrays in Java
Ad

Similar to Unit 2 dsa LINEAR DATA STRUCTURE (20)

PPTX
unit-2-dsa.pptx
PPTX
DSA Unit II array.pptx
PPTX
unit 2.pptx
PPT
PDF
M v bramhananda reddy dsa complete notes
PPT
Arrays and vectors in Data Structure.ppt
PDF
Data structure and algorithm notes
PPTX
U2.pptx Advanced Data Structures and Algorithms
PPTX
datastructure concepts ppt-190327174340.pptx
PDF
DSA UNIT II ARRAY AND LIST - notes
PPTX
Data structures and algorithms arrays
PPTX
Arrays
PPTX
Module_3_Arrays - Updated.pptx............
PDF
DATA STRUCTURES USING C -ENGGDIGEST
PPTX
Data Structure Introduction- Arrays, Matrix, Linked List
PPTX
arrays.pptx
PPTX
ADVANCED DATA STRUCTURES AND ALGORITHMS.pptx
DOCX
Datastructures and algorithms prepared by M.V.Brehmanada Reddy
PDF
DS Complete notes for Computer science and Engineering
PPTX
The document discusses arrays in data structures using Cpp programming langua...
unit-2-dsa.pptx
DSA Unit II array.pptx
unit 2.pptx
M v bramhananda reddy dsa complete notes
Arrays and vectors in Data Structure.ppt
Data structure and algorithm notes
U2.pptx Advanced Data Structures and Algorithms
datastructure concepts ppt-190327174340.pptx
DSA UNIT II ARRAY AND LIST - notes
Data structures and algorithms arrays
Arrays
Module_3_Arrays - Updated.pptx............
DATA STRUCTURES USING C -ENGGDIGEST
Data Structure Introduction- Arrays, Matrix, Linked List
arrays.pptx
ADVANCED DATA STRUCTURES AND ALGORITHMS.pptx
Datastructures and algorithms prepared by M.V.Brehmanada Reddy
DS Complete notes for Computer science and Engineering
The document discusses arrays in data structures using Cpp programming langua...
Ad

More from PUNE VIDYARTHI GRIHA'S COLLEGE OF ENGINEERING, NASHIK (20)

PDF
Wt unit 5 client &amp; server side framework
PDF
Wt unit 4 server side technology-2
PDF
PDF
Wt unit 2 ppts client sied technology
PDF
PDF
Wt unit 2 ppts client side technology
PDF
Wt unit 1 ppts web development process
PDF
PDF
COMPUTER LABORATORY-4 LAB MANUAL BE COMPUTER ENGINEERING
Wt unit 5 client &amp; server side framework
Wt unit 4 server side technology-2
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client side technology
Wt unit 1 ppts web development process
COMPUTER LABORATORY-4 LAB MANUAL BE COMPUTER ENGINEERING

Recently uploaded (20)

PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
composite construction of structures.pdf
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PPTX
Artificial Intelligence
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
PPT on Performance Review to get promotions
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
Geodesy 1.pptx...............................................
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
Safety Seminar civil to be ensured for safe working.
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Well-logging-methods_new................
PDF
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
composite construction of structures.pdf
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
Artificial Intelligence
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
Automation-in-Manufacturing-Chapter-Introduction.pdf
PPT on Performance Review to get promotions
Embodied AI: Ushering in the Next Era of Intelligent Systems
Model Code of Practice - Construction Work - 21102022 .pdf
Geodesy 1.pptx...............................................
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Internet of Things (IOT) - A guide to understanding
Safety Seminar civil to be ensured for safe working.
Operating System & Kernel Study Guide-1 - converted.pdf
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Well-logging-methods_new................
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026

Unit 2 dsa LINEAR DATA STRUCTURE

  • 1. Pune Vidyarthi Griha’s COLLEGE OF ENGINEERING, NASHIK – 3. “Linear Data Structure using Squential Organization” By Prof. Anand N. Gharu (Assistant Professor) PVGCOE Computer Dept. 10 July 2019 . 1
  • 2. SEQUENTIAL ORGANIZATION • Definition : “In computer science, sequential access means that a group of elements (such as data in a memory array or a disk file or on magnetic tape data storage) is accessed in a predetermined, ordered sequence.Sequential access is sometimes the only way of accessing the data, for example if it is on a tape.” PROF. ANAND GHARU 2
  • 3. Linear Data Structure Using Sequential Organization • Definition : “The data structure where data items are organized sequentially or linearly one after another is called as Linear Data Structure” A linear data structuretraverses the data elements sequentially, in which only one data element can directly be reached. Ex: Arrays, Linked Lists. PROF. ANAND GHARU 3
  • 4. Array • Definition : “An array is a finite ordered collection of homogeneous data elements which provides direct access (or random access)to any of its elements.  An array as a data structure is defined as a set of pairs (index,value) such that with each index a value is associated. • index — indicates the location of an element in an array. • value - indicates the actual value of that data element. Declaration of an array in ‘C++’: • int Array_A[20]; ” PROF. ANAND GHARU 4
  • 5. Array • Array Representation • Arrays can be declared in various ways in different languages. For illustration, let's take C array declaration. • Arrays can be declared in various ways in different languages. For illustration, let's take C array declaration. • As per the above illustration, following are the important points to be considered. PROF. ANAND GHARU 5
  • 6. Array • Array Representation • Index starts with 0. • Array length is 10 which means it can store 10 elements. • Each element can be accessed via its index. For example, we can fetch an element at index 6 as 9. • Basic Operations • Following are the basic operations supported by an array. • Traverse − print all the array elements one by one. • Insertion − Adds an element at the given index. • Deletion − Deletes an element at the given index. • Search − Searches an element using the given index or by the value. • Update − Updates an element at the given index. PROF. ANAND GHARU 6
  • 7. X(Base) X+1 7 X+2 X+(n-1) Array A Fig 2.1 Memory Representation Memory Representation and Calculation PROF. ANAND GHARU 7
  • 8.  The address of the ith element is calculated by the following formula (Base address) + (offset of the ith element from base address) Here, base address is the address of the first element where array storage starts. 8 ADDRESS CALCULATION PROF. ANAND GHARU 8 2
  • 9. • ADT is useful tool for specifying the logical properties of a data type. • A data type is a collection of values & the set of operations on the values. • ADT refers to the mathematical concept that defines the data type. • ADT is not concerned with implementation but is useful in making use of data type. Abstract Data Type
  • 10. • Arrays are stored in consecutive set of memory locations. • Array can be thought of as set of index and values. • For each index which is defined there is a value associated with that index. • There are two operations permitted on array data structure .retrieve and store ADT for an array
  • 11. • CREATE()-produces empty array. • RETRIVE(array,index)->value Takes as input array and index and either returns appropriate value or an error. • STORE(array,index,value)-array used to enter new index value pairs. ADT for an array
  • 12. Representation and analysis Type variable_name[size] Operations with arrays: Copy Delete Insert Search Sort Merging of sorting arrays. Introduction to arrays
  • 13. • #include <stdio.h> • • int main() • { • int a[100],b[100] position, c n; • • printf("Enter number of elements in arrayn"); • scanf("%d", &n); • • printf("Enter %d elementsn", n); • • for ( c = 0 ; c < n ; c++ ) • scanf("%d", &a[c]); • printf("Enter %d elementsn", n); • • for( c = 0 ; c < n - 1 ; c++ ) • printf("%dn", a[c]); • //Coping the element of array a to b • for( c = 0 ; c < n - 1 ; c++ ) • { • b[c]=a[c]; • } • } • • return 0; Copy operation
  • 14. Output• • • Enter number of elements in array -4 • • Enter 4 elements • 1 • 2 • 3 • 4 • displaying array a • 1 • 2 • 3 • 4 • displaying array b • 1 • 2 • 3 • 4 •
  • 15. • #include <stdio.h> • • int main() • { • int array[100], position, i, n; • • printf("Enter number of elements in arrayn"); • scanf("%d", &n); • • printf("Enter %d elementsn", n); • • for ( i = 0 ; i < n ; i++ ) • scanf("%d", &array[i]); • • printf("Enter the location where you wish to delete elementn"); • scanf("%d", &position); • • for ( i = position ; i < n; i++ ) o { • array[i] = array[i+1]; • } • printf("Resultant array isn"); • • for( i = 0 ; i < n-1 ; i++ ) • printf("%dn", array[i]); • return 0; • } Delete operation
  • 17. #include <stdio.h> int main() { int array[100], position, i, n, value; printf("Enter number of elements in arrayn"); scanf("%d", &n); printf("Enter %d elementsn", n); for (i= 0;i< n; i++) scanf("%d", &array[i]); printf("Enter the location where you wish to insert an elementn"); scanf("%d", &position); printf("Enter the value to insertn"); scanf("%d", &value); for (i = n - 1; i >= position ; i--) array[i+1] = array[i]; array[position] = value; printf("Resultant array isn"); for (i= 0; i <= n; i++) printf("%dn", array[i]); return 0; Inserting an element
  • 20. Reverse array #include <stdio.h> int main() { int array[100], n, i, temp, end; scanf("%d", &n); end = n - 1; for (i = 0; i < n; i++) { scanf("%d", &array[i]); } for (i= 0; < n/2; i++) { temp = array[i]; array[i] = array[end]; array[end] = temp; end--; } printf("Reversed array elements are:n"); for ( i= 0; i < n; i++) { printf("%dn", array[i]); } return 0; }
  • 21. Sort element using array int a[10]={5,4,3,2,1} for(i=0;i<n;i++) for(j=i+1;j<n;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } }
  • 22. Two-dimensional Arrays in C • multidimensional array is the two-dimensional array • type arrayName [ x ][ y ];
  • 24. m-no of rows n-no of columns Printf(“n Enter the rows and columns”); Scanf(%d %d”,&m,&n); for(i=0;i<m;i++) { for(j=0;j<n;j++) { Printf(“n Enter the value of(%d)(%d)=“,i,j); Scanf(“%d”,&a[i][j]); } }
  • 26.  Formally ADT is a collection of domain, operations,and axioms (or rules)  For defining an array as an ADT, we have to define its very basic operations or functions that can be performed on it  The basic operations of arrays are creation of an array, storing an element, accessing an element, and traversing the array 2 6 ARRAY AS AN ADT PROF. ANAND GHARU 26
  • 27.  List of operation on Array :-  1. Inserting an element into an array  2. deleting element from array  3. searching an element from array  4. sorting the array element 27PROF. ANAND GHARU 27
  • 28. N -dimensional Arrays PROF. ANAND GHARU 28
  • 30. Row-Major representation of 2Darray PROF. ANAND GHARU 30
  • 31. Three dimensions row-majorarrangement (i*m2*m3) elements A[0][m2][m3] A[1][m2][m3] A[i][m2][m3] A[m1-1][m2] PROF. ANAND GHARU 31
  • 32.  The address of A[i][j][k] is computedas  Addrof A[i][j][k] = X + i * m2 * m3 + j * m3 + k  By generalizing this we get the address of A[i1][i2][i3] … [ in] in n- dimensional array A[m1][m2][m3]. ….[ mn]  Consider the address of A [0][0][0]…..[0] is X then the address of A [i][0][0]….[0] = X + (i1 * m2 * m3 * - - -- - * mn )and  Address of A [i1][i2] …. [0] = X + (i1 * m2 * m3 * - -- - *mn ) + (i2 * m3 * m4 *--- * mn)  Continuing in a similar way, address of A[i1][i2][i3]- - - -[ in] willbe  Address of A[i1][i2][i3]----[ in] = X + (i1 * m2 * m3 * - - -- - * mn) + (i2 * m3 * m4 *--- - - * mn )+(i3 * m4 * m5--- * mn + (i4 * m5 * m6-- - - - * mn +…….+ in = PROF. ANAND GHARU 32
  • 33. Ex-Arrays #include <stdio.h> int main () { int a[10],i,size; printf(“nhow many no of elements u want to scan”); scanf(“%d”,&size); printf(“nEnter the elements in the array”); for(i=0;i<size;i++) { scanf(“%d”,&a[i]); } //end for for(i=0;i<size;i++) { printf(“The array is %d”,a[i]); //Displaying Array } //end for return 0;
  • 35. Multi-dimensional Arrays in C • type name[size1][size2]...[sizeN];
  • 36. Two-dimensional Arrays in C • multidimensional array is the two-dimensional array • type arrayName [ x ][ y ];
  • 38. HOW TO INITIALIZE 2-D ARRAY IN PROGRAM • Initializing Two-Dimensional Arrays int a[3][4] = { {0, 1, 2, 3} , /* initializers for {4, 5, 6, 7} , {8, 9, 10, 11} /* initializers for row /* initializers for row indexed by 2 */ };
  • 39. • Accessing Two-Dimensional Array Elements int val = a[2][3];
  • 40. Three-dimensional Arrays in C • For example, the following declaration creates a three dimensional integer array − • Ex-int threedim[5][10][4];
  • 41.  Arrays support various operations such as traversal, sorting, searching, insertion, deletion, merging, block movement, etc. 41 Insertion of an element into an array Deleting anelement Memory Representation of Two-DimensionalArrays THE CLASS ARRAY PROF. ANAND GHARU 41
  • 42. Columns Col1 col2 .... coln A11 A12 .... A1n A11 A12 .... A1n : : : Am1 Am2 .... Amn m*n Rows R1 R2 Rm 1 2 3 4 5 6 7 8 42 9 10 11 12 Matrix M = PROF. ANAND GHARU 42  Row-major Representation  Column-major Representation
  • 44. Row-major representation In row-major representation, the elements of Matrix are stored row-wise, i.e., elements of 1st row, 2nd row, 3rd row, and so on till mth row 1 2 3 4 5 6 7 8 9 10 11 12 (0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) (2,0) (2,1) (2,2) (2,3) Row1 Row2 Row3 PROF. ANAND GHARU 44
  • 45. Row major arrangement Row 0 Row 1 Row m-1 Row 0 Row 1 Row m-1 Memory Location Row-major arrangement in memory , in row major representation PROF. ANAND GHARU 45
  • 46.  The address of the element of the ith row and the jth column for matrix of size m x n can be calculated as: Addr(A[i][j]) = Base Address+ Offset = Base Address + (number of rows placed before ith row * size of row) * (Size of Element) + (number of elements placed before in jth element in ith row)* size of element  As row indexing starts from 0, i indicate number of rows before the ith row hereand similarly for j. For Element Size = 1 the address is Address of A[i][j]= Base + (i * n ) +j PROF. ANAND GHARU 46
  • 47. In general, Addr[i][j] = ((i–LB1) * (UB2 – LB2 + 1) * size) + ((j– LB2) * size)  where number of rows placed before ith row = (i –LB1)  where LB1 is the lower bound of the firstdimension. Size of row = (number of elements in row) * (size of element)Memory Locations The number of elements in arow = (UB2 – LB2 + 1)  where UB2 and LB2 are upper and lower bounds of the second dimension. PROF. ANAND GHARU 47
  • 48. Column-majorrepresentation In column-major representation m × n elements of two- dimensional array A are stored as one single row of columns.  The elements are stored in the memory as a sequence as first the elements of column 1, then elements of column 2 and so on till elements of column n PROF. ANAND GHARU 48
  • 49. Column-major arrangement col1 col2 Col n-1 Col 0 Col 1 Col 2 … Memory Location Column-major arrangement in memory , in column major representation PROF. ANAND GHARU 49
  • 50. The address of A[i][j] is computedas  Addr(A[i][j]) = Base Address+ Offset= Base Address + (number of columns placed before jth column * size of column) * (Size of Element) + (number of elements placed before in ith element in ith row)* size of element For Element_Size = 1 the addressis  Address of A[i][j] for column major arrangement = Base + (j * m ) + I In general, for column-major arrangement; address of the element of the jth row and the jth column therefore is  Addr (A[i][j] = ((j – LB2) * (UB1 – LB1 + 1) * size) + ((i –LB1) * size) PROF. ANAND GHARU 50
  • 51. Example 2.1: Consider an integer array, int A[3][4] inC++. If the base address is 1050, find the address of the element A[2] [3] with row-major and column-major representation of the array. For C++, lower bound of index is 0 and we have m=3, n=4, and Base= 1050. Let us compute address of element A [2][3] using the address computationformula 1. Row-Major Representation: Address of A [2][3] = Base + (i * n ) +j = 1050 + (2 * 4) + 3 = 1061 PROF. ANAND GHARU 51
  • 52. 1 2 3 4 5 6 7 8 9 10 11 12 (0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) (2,0) (2,1) (2,2) (2,3) Row1 Row2 Row3 Row-Major Representation of 2-D array PROF. ANAND GHARU 52
  • 53. 2. Column-Major Representation: Address of A [2][3] = Base + (j * m ) +i = 1050 + (3 * 3) + 2 = 1050 + 11 = 1061  Here the address of the element is same because it is the last member of last row and lastcolumn. PROF. ANAND GHARU 53
  • 54. 1 2 3 4 5 6 7 8 9 10 11 12 (0,0) (1,0) (2,0) (0,1) (1,1) (2,1) (0,2) (1,2) (2,2) (0,3) (1,3) (2,3) Col 1 Col 2 Col 3 Col 4 Column-Major Representation of 2-D array PROF. ANAND GHARU 54
  • 55. Characteristics of array An array is a finite ordered collection of homogeneous data elements. In array, successive elements of list are stored at a fixed distance apart. Array is defined as set of pairs-( index and value). Array allows random access to any element Inarray, insertion and deletion of element in between positions • requires data movement. Array provides static allocation, which means space allocation done once during compile time, can not be changed run time. 55PROF. ANAND GHARU 55
  • 56. Advantage of Array Data Structure Arrays permit efficient random access in constant time 0(1). Arrays are most appropriate for storing a fixed amount of data and also for high frequency of data retrievals as data can be accessed directly. Wherever there is a direct mapping between the elements and there positions, arrays are the most suitable data structures. Ordered lists such as polynomials are most efficiently handled using arrays. Arrays are useful to form the basis for several more complex data structures, such as heaps, and hash tables and can be used to represent strings, stacks andqueues. 56PROF. ANAND GHARU 56
  • 57. Disadvantage of Array Data Structure Arrays provide static memory management. Hence during execution the size can neither be grown nor shrunk. Array is inefficient when often data is to inserted or deleted as inserting and deleting an element in array needs a lot of data movement. Hence array is inefficient for the applications, which very often need insert and delete operations in between. 57PROF. ANAND GHARU 57
  • 58. Applications of Arrays Although useful in their own right, arrays also form the basis for several more complex data structures, such as heaps, hash tables and can be used to represent strings, stacks and queues. All these applications benefit from the compactness and direct access benefits ofarrays. Two-dimensional data when represented as Matrix and matrix operations. 58PROF. ANAND GHARU 58
  • 59. CONCEPT OF ORDERED LIST Ordered list is the most common and frequently used data object Linear elements of an ordered list are related with each other in a particular order or sequence Following are some examples of theordered list.  1, 3,5,7,9,11,13,15  January, February, March, April, May, June, July, August, September,  October, November, December  Red, Blue, Green, Black, Yellow PROF. ANAND GHARU 59
  • 60. There are many basic operations that can be performed on the ordered list asfollows:  Finding the length of the list  Traverse the list from left to right or from right to left  Access the ith element in thelist the ith Update (Overwrite) the value of position  Insert an element at the ith location  Delete an element at the ith position PROF. ANAND GHARU 60
  • 62. Single Variable Polynomial  Representation Using Arrays  Array of Structures  Polynomial Evaluation  Polynomial Addition  Multiplication of TwoPolynomials PROF. ANAND GHARU 62
  • 65. Polynomial as an ADT, the basic operations are as follows: Creation of a polynomial Addition of two polynomials Subtraction of two polynomials Multiplication of twopolynomials Polynomial evaluation PROF. ANAND GHARU 65
  • 66. Polynomial by using Array PROF. ANAND GHARU 66
  • 67. Polynomial by using Array PROF. ANAND GHARU 67
  • 68.  Structure is better than array for Polynomial:  Such representation by an array is both time and space efficient when polynomial is not a sparse one such as polynomial P(x) of degree 3 where P(x)= 3x3+x2–2x+5.  But when polynomial is sparse such as in worst case a polynomial as A(x)= x99 + 78 for degree of n =100, then only two locations out of 101 would be used.  In such cases it is better to store polynomial as pairs of coefficient and exponent. We may go for two different arrays for each or a structure having two members as two arrays for each of coeff. and Exp or an array of structure that consists of two data members coefficient and exponent. PROF. ANAND GHARU 68
  • 69. Polynomial by using structure Let us go for structure having two data members coefficient and exponent and itsarray. PROF. ANAND GHARU 69
  • 70. SPARSE MATRIX In many situations, matrix size is very large but out of it, most of the elements are zeros (not necessarily always zeros). And only a small fraction of the matrix is actually used. A matrix of such type is called a sparse matrix, PROF. ANAND GHARU 70
  • 72. Sparse Logical Matrix PROF. ANAND GHARU 72
  • 73. Sparse matrix and itsrepresentation PROF. ANAND GHARU 73
  • 74. Transpose Of Sparse Matrix Simple Transpose Fast Transpose PROF. ANAND GHARU 74
  • 75. Transpose Of Sparse Matrix PROF. ANAND GHARU 75
  • 76. Transpose Of Sparse Matrix PROF. ANAND GHARU 76
  • 77. Time complexity of manual technique is O(mn). PROF. ANAND GHARU 77
  • 79. Time complexity will be O (n. T) = O (n . mn) = O (mn2) which is worst than the conventional transpose with time complexity O (mn) Simple Sparse matrixtranspose PROF. ANAND GHARU 79
  • 80. Fast Sparse matrix transpose In worst case, i.e. T= m × n (non-zero elements) the magnitude becomes O (n +mn) = O (mn) which is the same as 2-D transpose However the constant factor associated with fast transpose is quite high When T is sufficiently small, compared to its maximum of m . n, fast transpose will workfaster PROF. ANAND GHARU 80
  • 81. It is usually formed from the character set of the programming language The value n is the length of the character string S where n ³ 0  If n = 0 then S is called a null string or empty string String Manipulation Using Array PROF. ANAND GHARU 81
  • 82. Basically a string is stored as a sequence of characters in one- dimensional character array say A. char A[10] ="STRING" ; Each string is terminated by a special character that is null character ‘0’. This null character indicates the end or termination of each string. 82PROF. ANAND GHARU 82
  • 83. There are various operations that can be performed on thestring: Tofind the length of astring Toconcatenate two strings Tocopy astring Toreverse a string String compare Palindrome check Torecognize a substring. 83PROF. ANAND GHARU 83
  • 84. PROF. ANAND GHARU 84 Write a program to reverse string. #include<iostream> #include<string.h> using namespace std; int main () { char str[50], temp; int i, j; cout << "Enter a string : "; Cin>>str; j = strlen(str) - 1; for (i = 0; i < j; i++,j--) { temp = str[i]; str[i] = str[j]; str[j] = temp; } cout << "nReverse string : " << str; return 0; }
  • 85. PROF. ANAND GHARU 85 /* C++ Program - Concatenate String using inbuilt function */ #include<iostream.h> #include<string.h> void main() { clrscr(); char str1[50], str2[50]; cout<<"Enter first string : "; Cin>>str1; cout<<"Enter second string : "; cin>>str2; strcat(str1, str2); cout<<"String after concatenation is "<<str1; getch(); }
  • 86. PROF. ANAND GHARU 86 /* C++ Program - Concatenate String without using inbuilt function */ #include <iostream> using namespace std; int main() { char str1[100] = "Hi..."; char str2[100] = "How are you"; int i,j; cout<<"String 1: "<<str1<<endl; cout<<"String 2: "<<str2<<endl; for(i = 0; str1[i] != '0'; ++i); j=0; while(str2[j] != '0') { str1[i] = str2[j]; i++; j++; } str1[i] = '0'; cout<<"String after concatenation: "<<str1; return 0; }
  • 87. PROF. ANAND GHARU 87 To get the length of a C-string string, strlen() function is used. #include <iostream> #include <cstring> using namespace std; int main() { char str[] = "C++ Programming is awesome"; // you can also use str.length() cout << "String Length = " << strlen(str); return 0; } Find length of string without using strlen function #include<iostream> using namespace std; int main() { char str[] = "Apple"; int count = 0; while (str[count] != '0') count++; cout<<"The string is "<<str<<endl; cout <<"The length of the string is "<<count<<endl; return 0; }
  • 88. PROF. ANAND GHARU 88 /* C++ Program - Compare Two String */ #include<iostream.h> #include<string.h> void main() { clrscr(); char str1[100], str2[100]; cout<<"Enter first string : "; gets(str1); cout<<"Enter second string : "; gets(str2); if(strcmp(str1, str2)==0) { cout<<"Both the strings are equal"; } else { cout<<"Both the strings are not equal"; } getch(); }
  • 89. PROF. ANAND GHARU 89 #include <iostream> #include <string.h> using namespace std; int main() { char str1[20], str2[20]; int i, j, len = 0, flag = 0; cout << "Enter the string : "; gets(str1); len = strlen(str1) - 1; for (i = len, j = 0; i >= 0 ; i--, j++) str2[j] = str1[i]; if (strcmp(str1, str2)) flag = 1; if (flag == 1) cout << str1 << " is not a palindrome"; else cout << str1 << " is a palindrome"; return 0; } String is palindrom or not
  • 90. PROF. ANAND GHARU 90 SIMPLE TRANSPOSE OF MATRIX IN C++ #include <iostream> using namespace std; int main() { int a[10][10], trans[10][10], r, c, i, j; cout << "Enter rows and columns of matrix: "; cin >> r >> c;// Storing element of matrix cout << endl << "Enter elements of matrix: " << endl; for(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { cout << "Enter elements a" << i + 1 << j + 1 << ": "; cin >> a[i][j]; } // Displaying the matrix a[][] cout << endl << "Entered Matrix: " << endl; for(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { cout << " " << a[i][j]; if(j == c - 1) cout << endl << endl; } // Finding transpose of matrix a[][] and storing it infor(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { trans[j][i]=a[i][j]; } // Displaying the transpose cout << endl << "Transpose of Matrix: " << endl; for(i = 0; i < c; ++i) for(j = 0; j < r; ++j) { cout << " " << trans[i][j]; if(j == r - 1) cout << endl << endl; } return 0; }
  • 91. PROF. ANAND GHARU 91 MULTIPLICATION OF TWO POLYNOMIAL #include<math.h> #include<stdio.h> #include<conio.h> #define MAX 17 void init(int p[]); void read(int p[]); void print(int p[]); void add(int p1[],int p2[],int p3[]); void multiply(int p1[],int p2[],int p3[]); /*Polynomial is stored in an array, p[i] gives coefficient of x^i . a polynomial 3x^2 + 12x^4 will be represented as (0,0,3,0,12,0,0,….) */ void main() { int p1[MAX],p2[MAX],p3[MAX]; int option; do { printf(“nn1 : create 1’st polynomial”); printf(“n2 : create 2’nd polynomial”); printf(“n3 : Add polynomials”); printf(“n4 : Multiply polynomials”); printf(“n5 : Quit”); printf(“nEnter your choice :”); scanf(“%d”,&option); switch(option) { case 1:read(p1);break; case 2:read(p2);break; case 3:add(p1,p2,p3); printf(“n1’st polynomial -> “); print(p1); printf(“n2’nd polynomial -> “); print(p2); printf(“n Sum = “); print(p3); break; case 4:multiply(p1,p2,p3); printf(“n1’st polynomial -> “); print(p1); printf(“n2’nd polynomial -> “); print(p2); printf(“n Product = “); print(p3); break; } }while(option!=5); }
  • 92. PROF. ANAND GHARU 92 MULTIPLICATION OF TWO POLYNOMIAL void read(int p[]) { int n, i, power,coeff; init(p); printf(“n Enter number of terms :”); scanf(“%d”,&n); /* read n terms */ for (i=0;i<n;i++) { printf(“nenter a term(power coeff.)”); scanf(“%d%d”,&power,&coeff); p[power]=coeff; } } void print(int p[]) { int i; for(i=0;i<MAX;i++) if(p[i]!=0) printf(“%dX^%d “,p[i],i); } void add(int p1[], int p2[], int p3[]) { int i; for(i=0;i<MAX;i++) p3[i]=p1[i]+p2[i]; } void multiply(int p1[], int p2[], int p3[]) { int i,j; init(p3); for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) p3[i+j]=p3[i+j]+p1[i]*p2[j]; } void init(int p[]) { int i; for(i=0;i<MAX;i++) p[i]=0; } *******END******
  • 93. PROF. ANAND GHARU 93 FIND SIMPLE TRANSPOSE OF MATRIX #include <iostream> using namespace std; int main() { int a[10][10], trans[10][10], r, c, i, j; cout << "Enter rows and columns of matrix: "; cin >> r >> c; //Storing element of matrix enter by user in array a[][]. cout << endl << "Enter elements of matrix: " << endl; for(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { cout << "Enter elements a" << i + 1 << j + 1 << ": "; cin >> a[i][j]; } // Displaying the matrix a[][] cout << endl << "Entered Matrix: " << endl; for(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { cout << " " << a[i][j]; if(j == c - 1) cout << endl << endl; } // Finding transpose of matrix a[][] and storing it in array trans[][]. for(i = 0; i < r; ++i) for(j = 0; j < c; ++j) { trans[j][i]=a[i][j]; }
  • 94. PROF. ANAND GHARU 94 FIND SIMPLE TRANSPOSE OF MATRIX // Displaying the transpose,i.e, Displaying array trans[][]. cout << endl << "Transpose of Matrix: " << endl; for(i = 0; i < c; ++i) for(j = 0; j < r; ++j) { cout << " " << trans[i][j]; if(j == r - 1) cout << endl << endl; } return 0; }
  • 95. 95 THANK YOU !!!!! Blog : anandgharu.wordpress.com [email protected] PROF. ANAND GHARU 95