58
EX NO: IMPLEMENTATION OF RECURSIVE ALGORITHM DATE: USING POINTER AIM: To write a C-Program to implement a recursive algorithm using pointers ALGORITHM: STEP 1: Start the program STEP 2: Declare the variable, *no, factorial, sum, p, i, and the function fact(int p), sum(int p), fib(int p) STEP 3: Read the value of no. STEP 4: Call the function fact(*no), sum(*no) STEP 5: Using a for loop call the function fib(int p) and display the Fibonacci series & also display factorial & summation. STEP 6: Stop the program FUNCTION FIB (int p) STEP 1: Check whether the value of n is equal to ‘0’ if so return ‘0’ STEP 2: Else check whether (p>=1 && p<=2), if so return the value ‘1’ STEP 3: Else return ( fib(p-1)+ fib(p-2)) FUNCTION FACT (int p) STEP 1: Check whether (p==0), if so return ‘1’. STEP 2: Else return (p*fact(p-1)) FUNCTION SUM (int p) STEP 1: Check whether p==0, if so return ‘0’ STEP 2: Else return (p+sum(p-1))

c programming using pointers

Embed Size (px)

DESCRIPTION

this is a collection of c programs using pointers

Citation preview

Page 1: c programming using pointers

EX NO: IMPLEMENTATION OF RECURSIVE ALGORITHMDATE: USING POINTER

AIM: To write a C-Program to implement a recursive algorithm using pointers

ALGORITHM:

STEP 1: Start the program STEP 2: Declare the variable, *no, factorial, sum, p, i, and the function fact(int p), sum(int p), fib(int p)STEP 3: Read the value of no.STEP 4: Call the function fact(*no), sum(*no)STEP 5: Using a for loop call the function fib(int p) and display the Fibonacci series &

also display factorial & summation.STEP 6: Stop the program

FUNCTION FIB (int p)

STEP 1: Check whether the value of n is equal to ‘0’ if so return ‘0’STEP 2: Else check whether (p>=1 && p<=2), if so return the value ‘1’STEP 3: Else return ( fib(p-1)+ fib(p-2))

FUNCTION FACT (int p)

STEP 1: Check whether (p==0), if so return ‘1’.STEP 2: Else return (p*fact(p-1))

FUNCTION SUM (int p)

STEP 1: Check whether p==0, if so return ‘0’STEP 2: Else return (p+sum(p-1))

Page 2: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>void main(){

int i,p, *no,factorial,summ;int fact(int p);int sum(int p);int fib(int p);clrscr();printf("\n Enter The Number:");scanf("%d",no);printf("\n The Fibonnacci series: \n");for(i=0;i<*no;i++)

printf("%d\n",fib(i));factorial=fact(*no);printf("\n The factorial of %d: %d\n", *no,factorial);summ=sum(*no);printf("\nThe summation of %d: %d\n", *no,summ);getch();

}int fib(int p){

if(p==0)return(0);if(p>=1&&p<=2)return(1);elsereturn(fib(p-1)+fib(p-2));

}int fact(int p){

if(p==0)return(1);elsereturn(p*fact(p-1));

}int sum(int p){

if(p==0)return(0);elsereturn(p+sum(p-1));

}

Page 3: c programming using pointers

OUTPUT:

Enter the Number: 5

The Fibonacci series:01123The factorial of 5: 120The summation of 5: 15

Page 4: c programming using pointers

RESULT:

Thus the C-Program was written to implement a recursive algorithm using pointers and the output was verified

Page 5: c programming using pointers

`EX.NO: IMPLEMENTATION OF BUBBLE SORTDATE:

AIM: To write a C-Program to implement bubble sort using pointers and functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Call the function bubblesort(a,n)STEP 5: Print the sorted array aSTEP 6: Stop the program

FUNCTION BUBBBLESORT (int *b[], int n)

STEP 1: Declare the local variable.STEP 2: Set a for loop

for(i=0;i<n;i++)STEP 3: Nest another for loop

for(j=1;j<n;j++)STEP 4: Check the condition

b[i]>b[j]STEP 5: If so swap the two values using temporary variable t as

t=a[i] b[i]=b[j] b[j]=t

STEP 6: Else go back to step3.

Page 6: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>void bubblesort(int*[],int);void main(){

int i,n,a[100];clrscr();printf("\n Enter the number of elements:");scanf("%d",&n);printf("\n Enter the array elements");for(i=0;i<n;i++)

scanf("%d",&a[i]);printf("\nUNSORTED ARRAY ELEMENTS");for(i=0;i<n;i++)

printf("\t%d",a[i]);bubblesort(a,n);printf("\nSORTED ARRAY");for(i=0;i<n;i++)

printf("\t%d",*(a+i));getch();

}void bubblesort(int* b[],int n){

int i,j,t;for(i=0;i<n;i++){

for(j=i+1;j<n;j++){

if(b[i]>b[j]){

t=b[i];b[i]=b[j];b[j]=t;

}}

}}

Page 7: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements 3432124564356

UNSORTED ARRAY ELEMENTS 34 32 12 456 43 56

SORTED ARRAY 12 32 34 43 56 456

Page 8: c programming using pointers

RESULT:

Thus the C-Program was written to implement bubble sort using pointers and functionsand the output was verified successfully.

Page 9: c programming using pointers

EX.NO: IMPLEMENTATION OF SELECTION SORTDATE:

AIM: To write a C-Program to implement selection sort using pointers and functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Call the function sel(a,0,n-1)STEP 5: Print the sorted array aSTEP 6: Stop the program

FUNCTION SEL (int *x, int start, int stop )

STEP 1: Declare the local variable.STEP 2: Assign begin =start and small=begin and check if

start < stop STEP 3: If so then set a for loop

for(i=begin+1;i<=stop;i++) STEP 4: Check the condition

x[i]<x[small]STEP 6: If so then assign the value of i to small

Small=i STEP 7: Then swap the values of x[begin] and x[small] using temp

temp=x[begin] x[begin]=x[small] x[small]=temp

STEP 8: Call another function sel(x,start+1,stop)

Page 10: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>void sel(int *[],int,int);int main(){

int a[100],i,n;clrscr();printf("\nEnter The number Of elements:");scanf("%d",&n);printf("\nEnter the array elements one by one\n");for(i=0;i<n;i++){

scanf("%d",&a[i]);}printf("\nUNSORTED ARRAY ELEMENTS");for(i=0;i<n;i++)printf("\t%d",a[i]);sel(a,0,n-1);printf("SORTED ARRAY:\n");for(i=0;i<n;i++){

printf("\t %d",a[i]);}getch();return(0);

}void sel(int *x[], int start, int stop){

int begin=start;int small=begin;int temp,i;if(start<stop){

for(i=begin+1;i<=stop;i++){

if(x[i]<x[small])small=i;

}temp=x[begin];x[begin]=x[small];x[small]=temp;sel(x,start+1,stop);

Page 11: c programming using pointers

}}

OUTPUT:

Enter the number of elements:6

Enter the array elements one by one 234589980965

UNSORTED ARRAY ELEMENTS 23 45 89 98 09 65

SORTED ARRAY 09 23 45 65 89 98

Page 12: c programming using pointers

RESULT:

Thus the C-Program was written to implement selection sort using pointers and functionsand the output was verified successfully.

Page 13: c programming using pointers

EX.NO: IMPLEMENTATION OF MERGE SORTDATE:

AIM: To write a C-Program to implement merge sort using divide and conquer strategy

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Call the function split(a,0,n-1) STEP 5: Print the sorted array aSTEP 6: Stop the program

FUNCTION MERGE_SORT (int *a, int low, int high)

STEP 1: Declare the local variable.STEP 2: If low is less than high then assign the mean value of low

and high to mid mid =(low+high)/2

STEP 3: Call the function merge_sort(a,low,mid)STEP 4: Call the another function merge_sort(a,mid+1,high)STEP 5: Call the function combine(a,low,mid,high) FUNCTION SPLIT(int *c, int first, int last)

STEP 1: Declare the local variablesSTEP 2: Set the while loop till the condition i<=mid && j<=high is failedSTEP 3: Check whether a[i]<a[j] STEP 4: If so the assign the value of a[j] to temp[k] and increment j and k

temp[k]=a[i] j++ k++

STEP 5: Else assign a[j] to temp[k] and then increment j and k temp[k]=a[j] & j++ k++

STEP 6: Set another while loop till i is less than midSTEP 7: Assign the value of a[i] to temp[k]

temp[k]=a[i] & j++ k++STEP 8: Set another while loop till j is greater than midSTEP 9: Assign the value of a[j] to temp[k]

temp[k]=a[j] j++ k++

STEP 10: Construct a for loop for k for(k=low; k<=high; k++)

Page 14: c programming using pointers

STEP 11: Assign the value of temp[k] to a[k] a[k]=temp[k]

PROGRAM:

#include<stdio.h>#include<conio.h>void split(int *,int,int);void merge(int *,int,int,int,int);int a[25],b[25];void main(){

int i,n; clrscr(); printf("Enter the limit"); scanf("%d",&n); printf("\n Enter the elements"); for(i=0;i<n;i++)

{ scanf("%d",&a[i]);

} split(a,0,n-1);

printf("\n The sorted list is:"); for(i=0;i<n;i++) printf("\n %d",a[i]);

getch();}void split(int *c,int first,int last){

int mid; if(first<last) { mid=(first+last)/2; split(c,first,mid); split(c,mid+1,last); merge(c,first,mid,mid+1,last); } } void merge(int *a,int f1,int l1,int f2,intl2) { int i,j,k=0;

i=f1; j=f2; while(i<=l1&&j<=l2) {

if(a[i]<a[j]) b[k]=a[i++];

Page 15: c programming using pointers

else b[k]=a[j++]; k++; } while(i<=l1) b[k++]=a[i++]; while(j<=l2) i=f1; j=0; while(i<=l2&&j<k) a[i++]=b[j++] }

Page 16: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements 234589980965

UNSORTED ARRAY ELEMENTS 23 45 89 98 09 65

SORTED ARRAY 09 23 45 65 89 98

Page 17: c programming using pointers

RESULT:

Thus the C-Program was written to implement merge sort using pointers and functionsand the output was verified successfully.

Page 18: c programming using pointers

EX.NO: IMPLEMENTATION OF BINARY SEARCH WITH RECURSIONDATE:

AIM: To write a C-Program to implement binary search using recursive functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Set a for loop

for(i=0;i<n;i++)STEP 5: Nest another for loop

for(j=i+1;j<n;j++)STEP 6: Check the condition a[i]>a[j]STEP 7: If so swap the two values using temporary variable t as

t=a[i] a[i]=a[j] a[j]=t

STEP 8: Else go back to step 6.STEP 9: Set a for loop to print the value of array a

For(i=0;i<n;i++)STEP 10: Read the search key as kSTEP 11: Assign low=0 and high=n-1STEP 12: Call the function binsearch(a,k,low,high) STEP 13: Check if ans is not equal to1 if so print the position b+i

Else print that element is not foundSTEP 14: Stop the program

FUNCTION BINARY SEARCH (int *x[ ], int x, int low, int high)

STEP 1: Set a while loop till low is greater than highSTEP 2: Assign mean value of low and high to mid

mid=(high+low)/2STEP 3: Assign the value of x[mid] to p

p=x[mid]STEP 4: Check if x<p if so assign

high=mid-1STEP 5: Else check whether x>p if so then assign

low=mid+1STEP 6: Else check whether x= =p, if so return midSTEP 7: Else return -1

Page 19: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>binarysearch(int *[],int,int,int);void main(){ int i,j,k,t,low,high,n,a[50],ans; clrscr(); printf("\n enter the N:");

scanf("%d",&n); printf("\n enter the array element one by one\n"); for(i=0;i<n;i++) scanf("%d",&a[i]);

printf("\n sorted array \n"); for(i=0;i<n;i++)

for(j=i+1;j<n;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<n;i++) printf("\t a[%d]=%d\n",i,a[i]); printf("\t enter the element to search:"); scanf("%d",&k); low=0; high=n-1; ans=binarysearch(a,k,low,high); if(ans!=-1) printf("\nthe number %d is present in the list at location %d",k,ans); else printf(" the number is not present in the list"); getch(); } int binarysearch(int *a[],int x,int low,int high) { int mid,p; if(low>high) return-1; mid=(low+high)/2; p=a[mid]; if(x==p) return(mid); else

Page 20: c programming using pointers

if(x<p) return binarysearch(a,x,low,mid-1); else return binarysearch(a,x,mid+1,high); }

Page 21: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements 234589980965

SORTED ARRAY 09 23 45 65 89 98

Enter the element to search 23

The number 23 is present in the list at location 2

Enter the element to search 50

The number is not present in the list

Page 22: c programming using pointers

RESULT:

Thus the C-Program was written to implement binary search using recursive functionsand the output was verified successfully.

Page 23: c programming using pointers

EX.NO: IMPLEMENTATION OF BINARY SEARCH WITHOUT RECURSIONDATE:

AIM: To write a C-Program to implement binary search using non-recursive functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Set a for loop

for(i=0;i<n;i++)STEP 5: Nest another for loop

for(j=i+1;j<n;j++)STEP 6: Check the condition a[i]>a[j]STEP 7: If so swap the two values using temporary variable t as

t=a[i] a[i]=a[j] a[j]=t

STEP 8: Else go back to step 6.STEP 9: Set a for loop to print the value of array a

for(i=0;i<n;i++)STEP 10: Read the search key as kSTEP 11: Assign low=0 and high=n-1STEP 12: Call the function binsearch(a,k,low,high) STEP 13: Check if ans is not equal to1 if so print the position b+i

Else print that element is not foundSTEP 14: Stop the program

FUNCTION BINARY SEARCH (int *a[ ], int x, int low, int high)

STEP 1: Check if low>high if so return -1STEP 2: Else assign mean value of low and high to mid

mid=(high+low)/2STEP 3: Assign the value of a[mid] to p

p=a[mid]STEP 4: Check if x= =p if so then return midSTEP 5: Else check whether x<p if so then return

binsearch(a,x,low,mid-1)STEP 6: Else return

binsearch(a,x,mid+1,high)

Page 24: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>binarysearch(int *[],int,int);void main(){

int i,j,n,a[10],t,k,b;clrscr();printf(" ENTER THE NUMBER\n ");scanf("%d",&n);printf("Enter array elements\n");for(i=0;i<n;i++)

scanf("%d",&a[i]);printf("The sorted the array\n");for(i=0;i<n;i++)

for(j=i+1;j<n;j++)if(a[i]>a[j]){

t=a[i];a[i]=a[j];a[j]=t;

}for(i=0;i<n;i++)

printf("%d",a[i]);printf("\nEnter the search element\n");scanf("%d",&k);b=binarysearch(&a,n,k);if(b!=-1)

printf("position:%d",b);else

printf("search element not found\n");getch();

}binarysearch(int *a[],int n,int k){

int mid,low,high,p;low=0;high=n-1;while(low<=high){

mid=(low+high)/2;p=a[mid];if(p>k)

high=mid-1;else if(p<k)

Page 25: c programming using pointers

low=mid+1;else if(k==p)

return mid;}return-1;

}

Page 26: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements 234589980965

SORTED ARRAY 09 23 45 65 89 98

Enter the element to search 23

The number 23 is present in the list at location 2

Enter the element to search 50

The number is not present in the list

Page 27: c programming using pointers

RESULT:

Thus the C-Program was written to implement binary search without using recursive functions and the output was verified successfully.

Page 28: c programming using pointers

EX.NO: IMPLEMENTATION OF QUICK SORTDATE:

AIM: To write a C-Program to implement quick sort using pointers and functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Assign the pointer array *a[100] as global, read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Call the function sort(0,n-1)STEP 5: Print the sorted array aSTEP 6: Stop the program

FUNCTION SORT (int first, int last )

STEP 1: Declare the local variable.STEP 2: Check if first is less than last

first < last STEP 3: If so then assign the following

pivot=a[first] i=first j=last

STEP 4: Assign a while loop till the condition i<j

STEP 5: Assign a while loop to increment i till a[i]<pivot and i< last

STEP 6: Assign a while loop to decrement j till a[j] > pivot and j > first

STEP 7: Check whether i is than j if so then swap the values of a[i] and a[j] temp=a[i] a[j]=a[j] a[j]=temp

STEP 8: Then swap the values of a[j] and a[first] temp=a[j] a[j]=a[first] a[first]=temp

STEP 9: Call another functions sort(first, j-1) and sort(j+1, last)

Page 29: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>int *a[50],n,i;void sort(int,int);void main(){

clrscr();printf("Enter the No of Elements:");scanf("%d",&n);printf("Enter The Elements;");for(i=0;i<n;i++)scanf("%d",&a[i]);printf("\nUNSORTED ARRAY ELEMENTS");for(i=0;i<n;i++)printf("\t%d",a[i]);sort(0,n-1);printf("\nSORTED ARRAY");for(i=0;i<n;i++)

printf("%d",a[i]);getch();

}void sort(int first,int last){

int *temp,*pivot,i,j;if(first<last){

pivot=a[first];i=first;j=last;while(i<j){

while((a[i]<=pivot)&&(i<last))i++;while((a[j]>=pivot)&&(j>first))j--;if(i<j){

temp=a[i];a[i]=a[j];a[j]=temp;

}}temp=a[first];a[first]=a[j];

Page 30: c programming using pointers

a[j]=temp;sort(first,j-1);sort(j+1,last);

}}

Page 31: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements one by one 234589980965

UNSORTED ARRAY ELEMENTS 23 45 89 98 09 65

SORTED ARRAY 09 23 45 65 89 98

Page 32: c programming using pointers

RESULT:

Thus the C-Program was written to implement quick sort using functions and pointers and the output was verified successfully.

Page 33: c programming using pointers

EX.NO: IMPLEMENTATION OF INSERTION SORTDATE:

AIM: To write a C-Program to implement insertion sort using pointers and functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Read the value of nSTEP 3: Set a for loop to read the elements of array

for(i=0;i<n;i++)STEP 4: Call the function ins_sort(a,n)STEP 5: Print the sorted array aSTEP 6: Stop the program

FUNCTION INS_SORT (int *b[], int k )

STEP 1: Declare the local variable.STEP 2: Set a for loop for p

for(p=1;p<k;p++)STEP 3: Assign the value of b[p] to temp

temp=b[p]STEP 4: Set a nested for loop for j

for(j=p;j>0&&b[j-1]>temp;j--)STEP 5: Assign the value of b[j-1] to b[j] and temp to b[j]

b[j]=b[j-1]; b[j]=temp;

STEP 6: Assign a while loop to decrement j till a[j] > pivot and j > first

STEP 7: Check whether i is than j if so then swap the values of a[i] and a[j] temp=a[i] a[j]=a[j] a[j]=temp

STEP 8: Then swap the values of a[j] and a[first] temp=a[j] a[j]=a[first] a[first]=temp

STEP 9: Call another functions sort(first, j-1) and sort(j+1, last)

Page 34: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>void ins_sort(int *a[], int n);void main(){

int i,n,*a[50];clrscr();printf("Enter the number of Elements");scanf("%d",&n);printf("\nEnter the array elements \n");for(i=0;i<n;i++)

scanf("%d",&a[i]);printf("UNSORTED ARRAY:\n");for(i=0;i<n;i++)

printf("\t%d",a[i]);ins_sort(a,n);

printf("SORTED ARRAY:\n");for(i=0;i<n;i++)

printf("\t%d",a[i]);getch();

}void ins_sort(int *b[], int k){

int j,p,*temp;for(p=1;p<k;p++){

temp=b[p];for(j=p;j>0&&b[j-1]>temp;j--)

b[j]=b[j-1];b[j]=temp;

}

Page 35: c programming using pointers

OUTPUT:

Enter the number of elements:6

Enter the array elements one by one 234589980965

UNSORTED ARRAY ELEMENTS 23 45 89 98 09 65

SORTED ARRAY 09 23 45 65 89 98

Page 36: c programming using pointers

RESULT:

Thus the C-Program was written to implement insertion sort using pointers and functionsand the output was verified successfully.

Page 37: c programming using pointers

EX.NO: IMPLEMENTATION OF 8 QUEEN PROBLEMSDATE:

AIM: To write a C-Program to implement a 8 queen program using functions

ALGORITHM:

STEP 1: Define the functions that are to be usedSTEP 2: Assign a constant value of 8 to QUEENNOSTEP 3: Call the function placequeen(0,x)STEP 4: Print the message “end”STEP 5: Stop the program

FUNCTION VOID PLACEQUEEN(int k, int *x)

STEP 1: Declare local variablesSTEP 2: Set a for loop for i

for(i=0;i<8;i++)STEP 3: Check for result of function canbeplaced(k,i,x) STEP 4: If it is 1 then assign the value of i to x[k]

x[k]=i;STEP 5: Check if k is equal to 7 if show call the function showboard(x)STEP 6: Read the value of ch from the userSTEP 7: If the value is equal to n or N then exitSTEP 8: Check whether k is less than 7 if so then call the function placequeen(k+1,x)

FUNCTION INT CANBEPLACED(int k, int i, int *x)

STEP 1: Declare the local variablesSTEP 2: Set a for loop for j

for(j=0;j<k;j++)STEP 3: Check for the following condition

if((abs(j-k)==abs(x[j]-i)||(x[j]==i)))STEP 4: If its true return 0 else return 1

FUNCTION VOID SHOWBOARD(int *x)

STEP 1: Declare the local variablesSTEP 2: Set all the display style in printf functionSTEP 3: Set a for loop for i to print 1,2,..8 vertically and horizontally

for(i=0;i<8;i++)STEP 4: Set another for loop for j and check whether j is equal to x[i]

for(j=0;j<8;j++)STEP 5: If so then print Q else print -

Page 38: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>#define QUEENNO 8void placequeen(int,int*);int canbeplaced(int,int,int*);void showboard(int*);void main(){

int x[QUEENNO],i;clrscr();printf("the 8 queens problem");placequeen(0,x);printf("end");getch();

}void placequeen(int k,int *x){

int i,j;char ch;for(i=0;i<8;i++){

if(canbeplaced(k,i,x)){

x[k]=i;if(k==7){showboard(x);printf("want to see more?[n->stop, any-> continue]:");scanf("%c",&ch);if(ch=='n' || ch=='N')

exit(0);}if(k<7)

placequeen(k+1,x);}

}}int canbeplaced(int k,int i,int *x){

int j;for(j=0;j<k;j++){

if((abs(j-k)==abs(x[j]-i))||(x[j]==i)))

Page 39: c programming using pointers

return 0;}return 1;

}void showboard(int *x){

int i,j;printf("\n----------------------------------------------\n");printf(" ");for(i=0;i<8;i++){

printf("%d",(i+1));printf(" ");

}for(i=0;i<8;i++){

printf("\n\n%d",(i+1));for(j=0;j<8;j++){

if(j==x[i])printf("Q");

elseprintf("-");

printf(" ");}

printf("");}

printf("\n----------------------------------------------");

}

Page 40: c programming using pointers

OUTPUT:

The 8 queens’ problem

------------------ 1 2 3 4 5 6 7 8 1 Q - - - - - - -2 - - Q - - - - -3 - - - - Q - - -4 - - - - - - Q -5 – Q - - - - - -6 - - - Q - - - -7 - - - - - Q - -8 - - - - - - - Q------------------ want to see more?[n->stop, any-> continue]: n

Page 41: c programming using pointers

RESULT:

Thus the C-Program was written to implement an 8 queen program using functionsand the output was verified successfully.

Page 42: c programming using pointers

EX.NO: IMPLEMENTATION OF MINIMUM SPANNING TREE DATE:

AIM: To write the C-Program to implement minimum spanning tree using structures, pointers and functions

ALGORITHM:

STEP 1: Start the programSTEP 2: Assign MAX a constant value of 20STEP 3: Declare a structure edge with structure variable *frontSTEP 4: Define the functions and variables required in the program globallySTEP 5: Call the function create_graph() inside the main functionSTEP 6: Call the function make_tree()STEP 7: Set a for loop using i

for(i=1;i<=count;i++)STEP 8: Print the values of tree[i].u and tree[i].vSTEP 9: Stop the program

FUNCTION OF CREATE_GRAPH ( )

STEP 1: Declare the local variablesSTEP 2: Read the number of nodes nSTEP 3: Calculate the value of max_edge as

max_edge=n*(n-1)/2STEP 4: Set a for loop using i

for(i=0;i<=max_edge;i++)STEP 5: Read the values of origin and destinSTEP 6: Check whether origin and destin are equal to 0STEP 7: If so exit the loop using break statementSTEP 8: Read the weight of the current edge wtSTEP 9: Check the following condition

if(origin>n||destin>n||origin<=0||destin <=0)STEP 10: If any of the condition is true, print “invalid edge!” and decrement the value of i by 1STEP 11: Else call the function insert_pque(origin,destin,wt)STEP 12:Check whether i is less than n-1, if so then exit with an error message

FUNCTION OF MAKE_TREE ( )

STEP 1: Declare the local variables STEP 2: Initialize the variable tmp,node1,node2STEP 3: Assign the values for node1, node2STEP 4: Calculate and print the values of root_n1 and root_n2.STEP 5: If the two roots are not equal, call the function inset_tree

Page 43: c programming using pointers

STEP 6: Assign the value of root_n1 to father[root_n2]

FUNCTION OF INSERT_TREE (int i, int j, int wt )

STEP 1: Declare the local variables STEP 2: Increment the value of count STEP 3: Assign values to tree[count].u, tree[count].v, tree[count].weight.

FUNCTION OF INSERT_PQUE (int i, int j, int wt )

STEP 1: Declare the local variables STEP 2: Allocate the memory space of size, struct edge for tmpSTEP 3: Assign values to tmp->u, tmp->v, tmp->weight.STEP 4: Check for the following condition.

if(front==NULL||tmp->weight<front->weight)STEP 5: If any of the conditions are true assign the value of front to tmp->link and assign tmp to

frontSTEP 6: else set a while loop and declare following

q=q->link; tmp->link=q->link;

q->link=tmp; if(q->link==NULL)

tmp->link=NULL;

FUNCTION OF STRUCT EDGE *DEL_PQUE( )

STEP 1: Declare the local variableSTEP 2: Assign the value of front to tempSTEP 3: print the values of processed edge and return the value of tmp

Page 44: c programming using pointers

PROGRAM:

#include<stdio.h>#include<conio.h>#define MAX 20struct edge{

int u;int v;int weight;struct edge *link;

}*front=NULL;int father[MAX];struct edge tree[MAX];int n;int wt_tree=0;int count=0;void make_tree();void insert_tree(int i, int j, int wt);void insert_pque(int i, int j, int wt);struct edge *del_pque();void main(){

int i;create_graph();make_tree();clrscr();printf("edge to be included in spanning tree are:\n");for(i=1;i<=count;i++){

printf("%d->",tree[i].u);printf("%d\n",tree[i].v);

}printf("weight of this minimum spanning tree is: %d\n",wt_tree);getch();

}create_graph(){

int i,wt,max_edge,origin,destin;printf("enter no. of nodes");

Page 45: c programming using pointers

scanf("%d",&n);max_edge=n*(n-1)/2;for(i=0;i<=max_edge;i++){

printf("enter edge %d(0 0 to quit):",i);scanf("%d%d",&origin,&destin);if((origin==0)&&(destin==0))

break;printf("enter weight for this ecge");scanf("%d",&wt);if(origin>n||destin>n||origin<=0||destin <=0){

printf("invalid edge!");i--;

}else insert_pque(origin,destin,wt);

}if(i<n-1){

printf("spanning tree is not possible");exit(1);

}return 0;

}void make_tree(){

struct edge *tmp;int node1,node2,root_n1,root_n2;while(count<n-1){

tmp=del_pque();node1=tmp->u;node2=tmp->v;printf("n1=%d",node1);printf("n2=%d",node2);while(node1>0){

root_n1=node1;node1=father[node1];

}while(node2>0){

root_n2=node2;node2=father[node2];

}printf("rootn1=%d\n",root_n1);

Page 46: c programming using pointers

printf("rootn2=%d\n",root_n2);if(root_n1!=root_n2){

insert_tree(tmp->u,tmp->v,tmp->weight);wt_tree=wt_tree+tmp->weight;father[root_n2]=root_n1;

}}

}void insert_tree(int i, int j, int wt){

printf("This Edge inserted in the spanning tree\n");count++;tree[count].u=i;tree[count].v=j;tree[count].weight=wt;

}void insert_pque(int i, int j, int wt){

struct edge *tmp, *q;tmp=(struct edge *)malloc(sizeof(struct edge));tmp->u=i;tmp->v=j;tmp->weight=wt;if(front==NULL||tmp->weight<front->weight){

tmp->link=front;front=tmp;

}else{

q=front;while(q->link!=NULL&&q->link->weight<=tmp->weight)

q=q->link;tmp->link=q->link;q->link=tmp;if(q->link==NULL)tmp->link=NULL;

}}struct edge *del_pque(){

struct edge *tmp;tmp=front;printf("Edge Processed is %d->%d%d\n",tmp->u,tmp->v,tmp->weight);front=front->link;return tmp;

Page 47: c programming using pointers

}

OUTPUT:

NUMBER OF NODES: 3Enter the Edge 1:2 2Enter the weight: 1Enter the Edge 2:2 3Enter the weight: 2Enter the Edge 3:2 1Enter the weight: 5

THE MINIMUM SPANNING TREE WEIGHT IS 7

Page 48: c programming using pointers

RESULT:

Thus the C-Program was written to implement minimum spanning tree using structures, pointers and functions and the output was verified successfully.