| < Day Day Up > |
Whenever we require a collection of data objects of the same type and want to process them as a single unit, an array can be used, provided the number of data items is constant or fixed. Arrays have a wide range of applications
A
list
is a structure in which insertions, deletions, and retrieval may occur at any position in the list. Therefore, when the list is static, it can be implemented by using an array. When a list is implemented or realized by using an array, it is a
contiguous list
. By contiguous, we mean that the elements are placed consecutively one after another starting from some address, called the
base address
. The advantage of a list implemented using an array is that it is
Figure 18.4:
Implementation of a static contiguous list.
A complete C program for implementing a list with operations for reading values of the elements of the list and displaying them is given here:
#include<stdio.h> #include<conio.h> void main() { void read(int *,int); void dis(int *,int); int a[5],i,sum=0; clrscr(); printf("Enter the elements of array \n"); read(a,5); /*read the array*/ printf("The array elements are \n"); dis(a,5); } void read(int c[],int i) { int j; for(j=0;j<i;j++) scanf("%d",&c[j]);
fflush
(stdin); } void dis(int d[],int i) { int j; for(j=0;j<i;j++) printf("%d ",d[j]); printf("\n"); }
Enter the elements of the first array
15 30 45 60 75
The elements of the first array are
15 30 45 60 75
| < Day Day Up > |
| < Day Day Up > |
Shown
ADDITION OF THE ELEMENTS OF THE LIST #include<stdio.h> #include<conio.h> void main() { void read(int *,int); void dis(int *,int); int a[5],i,sum=0; clrscr(); printf("Enter the elements of list \n"); read(a,5); /*read the list*/ printf("The list elements are \n"); dis(a,5); for(i=0;i<5;i++) { sum+=a[i]; } printf("The sum of the elements of the list is %d\n",sum); getch(); } void read(int c[],int i) { int j; for(j=0;j<i;j++) scanf("%d",&c[j]);
fflush
(stdin); } void dis(int d[],int i) { int j; for(j=0;j<i;j++) printf("%d ",d[j]); printf("\n"); }
Enter the elements of the first array
15 30 45 60 75
The elements of the first array are
15 30 45 60 75
The sum of the elements of an array is 225.
Suppose the first list is
1 2 3 4 5
and the second list is
5 6 8 9 10
The first element of first list is added to the first element of the second list, and the result of the addition is the first element of the third list.
In this example, 5 is added to 1, and the first element of third list is 6.
This step is repeated for all the elements of the lists and the resultant list after the addition is
6 8 11 13 15
#include<stdio.h> #include<conio.h> void main() { void read(int *,int); void dis(int *,int); void add(int *,int *,int * ,int); int a[5],b[5],c[5],i; clrscr(); printf("Enter the elements of first list \n"); read(a,5); /*read the first list*/ printf("The elements of first list are \n"); dis(a,5); /*Display the first list*/ printf("Enter the elements of second list \n"); read(b,5); /*read the second list*/ printf("The elements of second list are \n"); dis(b,5); /*Display the second list*/ add(a,b,c,i); printf("The resultant list is \n"); dis(c,5); getch(); } void add(int a[],int b[],int c[],int i) { for(i=0;i<5;i++) { c[i]=a[i]+b[i]; } } void read(int c[],int i) { int j; for(j=0;j<i;j++) scanf("%d",&c[j]); fflush(stdin); } void dis(int d[],int i) { int j; for(j=0;j<i;j++) printf("%d ",d[j]); printf("\n"); }
Repeat step (2) for i=0,1,2 , … (n − 1) , where n is the maximum number of elements in a list.
c[i] = a[i]+b[i] , where a is the first list, b is the second list, and c is the resultant list; a[i] denotes the i th element of list a .
Enter the elements of the first list
1 2 3 4 5
The elements of the first list are
2 3 4 5
Enter the elements of the second list
6 7 8 9 10
The elements of the second list are
6 7 8 9 10
The resultant list is
7 9 11 13 15
The following program makes a reverse version of the list.
#include<stdio.h> #include<conio.h> void main() { void read(int *,int); void dis(int *,int); void inverse(int *,int); int a[5],i; clrscr(); read(a,5); dis(a,5); inverse(a,5); dis(a,5); getch(); } void read(int c[],int i) { int j; printf("Enter the list \n"); for(j=0;j<i;j++) scanf("%d",&c[j]); fflush(stdin); } void dis(int d[],int i) { int j; printf("The list is \n"); for(j=0;j<i;j++) printf("%d ",d[j]); printf("\n"); } void inverse(int inver_a[],int j) { int i,temp; j-; for(i=0;i<(j/2);i++) { temp=inver_a[i]; inver_a[i]=inver_a[j]; inver_a[j]=temp; j-; } }
Enter the list
10 20 30 40 50
The list is
10 20 30 40 50
The inverse of the list is
50 40 30 20 10
This is another version of an inverse program, in which another list is used to hold the
#include<stdio.h> #include<conio.h> void main() { void read(int *,int); void dis(int *,int); void inverse(int *,int *,int); int a[5],b[5]; clrscr(); read(a,5); dis(a,5); inverse(a,b,5); dis(b,5); getch(); } void read(int c[],int i) { int j; printf("Enter the list \n"); for(j=0;j<i;j++) scanf("%d",&c[j]); fflush(stdin); } void dis(int d[],int i) { int j; printf("The list is \n"); for(j=0;j<i;j++) printf("%d ",d[j]); printf("\n"); } void inverse(int a[],int inverse_b[],int j) { int i,k; k=j-1; for(i=0;i<j;i++) { inverse_b[i]=a[k]; k-; } }
Enter the list
10 20 30 40 50
The list is
10 20 30 40 50
The inverse of the list is
50 40 30 20 10
| < Day Day Up > |