Upcoming SlideShare
×

# c-programming-using-pointers

7,019 views

Published on

c-programming-using-pointers

• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

### c-programming-using-pointers

1. 1. EX NO: IMPLEMENTATION OF RECURSIVE ALGORITHMDATE: USING POINTERAIM: To write a C-Program to implement a recursive algorithm using pointersALGORITHM:STEP 1: Start the programSTEP 2: Declare the variable, *no, factorial, sum, p, i, and the function fact(int p), sum(int p), fib(int p) sySTEP 3: Read the value of no.STEP 4: Call the function fact(*no), sum(*no) eaSTEP 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 eFUNCTION FIB (int p) adSTEP 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’ mSTEP 3: Else return ( fib(p-1)+ fib(p-2))FUNCTION FACT (int p) g inSTEP 1: Check whether (p==0), if so return ‘1’.STEP 2: Else return (p*fact(p-1)) mFUNCTION SUM (int p) amSTEP 1: Check whether p==0, if so return ‘0’STEP 2: Else return (p+sum(p-1)) o grPr
2. 2. 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(); sy printf("n Enter The Number:"); scanf("%d",no); ea printf("n The Fibonnacci series: n"); for(i=0;i<*no;i++) printf("%dn",fib(i)); factorial=fact(*no); e printf("n The factorial of %d: %dn", *no,factorial); ad summ=sum(*no);printf("nThe summation of %d: %dn", *no,summ); getch(); } m int fib(int p) { if(p==0) g return(0); in if(p>=1&&p<=2) return(1); m else return(fib(p-1)+fib(p-2)); am } int fact(int p) { gr if(p==0) return(1); else o return(p*fact(p-1));Pr } int sum(int p) { if(p==0) return(0); else return(p+sum(p-1)); }
3. 3. OUTPUT:Enter the Number: 5The Fibonacci series:01123 syThe factorial of 5: 120The summation of 5: 15 ea e ad m g in m am o grPr
4. 4. sy ea e ad m g in m am o grPrRESULT:Thus the C-Program was written to implement a recursive algorithm using pointers and theoutput was verified
5. 5. `EX.NO: IMPLEMENTATION OF BUBBLE SORTDATE:AIM: To write a C-Program to implement bubble sort using pointers and functionsALGORITHM: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++) sySTEP 4: Call the function bubblesort(a,n)STEP 5: Print the sorted array a eaSTEP 6: Stop the programFUNCTION BUBBBLESORT (int *b[], int n) e adSTEP 1: Declare the local variable.STEP 2: Set a for loop for(i=0;i<n;i++) mSTEP 3: Nest another for loop for(j=1;j<n;j++)STEP 4: Check the condition g b[i]>b[j] inSTEP 5: If so swap the two values using temporary variable t as t=a[i] m b[i]=b[j] b[j]=t amSTEP 6: Else go back to step3. o grPr
6. 6. 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); sy printf("n Enter the array elements"); for(i=0;i<n;i++) ea scanf("%d",&a[i]); printf("nUNSORTED ARRAY ELEMENTS"); for(i=0;i<n;i++) printf("t%d",a[i]); e bubblesort(a,n); ad printf("nSORTED ARRAY"); for(i=0;i<n;i++) printf("t%d",*(a+i)); m getch(); } void bubblesort(int* b[],int n) g { in int i,j,t; for(i=0;i<n;i++) m { for(j=i+1;j<n;j++) am { if(b[i]>b[j]) { gr t=b[i]; b[i]=b[j]; b[j]=t; o }Pr } } }
7. 7. OUTPUT:Enter the number of elements:6Enter the array elements 34321245643 sy56 eaUNSORTED ARRAY ELEMENTS 34 32 12 456 43 56SORTED ARRAY 12 32 34 43 56 456 e ad m g in m am o grPr
8. 8. sy ea e ad m g in m am o grPrRESULT:Thus the C-Program was written to implement bubble sort using pointers and functionsand the output was verified successfully.
9. 9. EX.NO: IMPLEMENTATION OF SELECTION SORTDATE:AIM: To write a C-Program to implement selection sort using pointers and functionsALGORITHM: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++) sySTEP 4: Call the function sel(a,0,n-1)STEP 5: Print the sorted array a eaSTEP 6: Stop the programFUNCTION SEL (int *x, int start, int stop ) e adSTEP 1: Declare the local variable.STEP 2: Assign begin =start and small=begin and check if m start < stopSTEP 3: If so then set a for loop for(i=begin+1;i<=stop;i++) gSTEP 4: Check the condition in x[i]<x[small]STEP 6: If so then assign the value of i to small m Small=iSTEP 7: Then swap the values of x[begin] and x[small] using temp am temp=x[begin] x[begin]=x[small] x[small]=temp grSTEP 8: Call another function sel(x,start+1,stop) oPr
10. 10. 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); sy printf("nEnter the array elements one by onen"); for(i=0;i<n;i++) { ea scanf("%d",&a[i]); } printf("nUNSORTED ARRAY ELEMENTS"); e for(i=0;i<n;i++) ad printf("t%d",a[i]); sel(a,0,n-1); printf("SORTED ARRAY:n"); m for(i=0;i<n;i++) { printf("t %d",a[i]); g } in getch(); return(0); m } am void sel(int *x[], int start, int stop) { int begin=start; int small=begin; gr int temp,i; if(start<stop) o {Pr 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); } }
11. 11. OUTPUT:Enter the number of elements:6Enter the array elements one by one 2345899809 sy65 eaUNSORTED ARRAY ELEMENTS 23 45 89 98 09 65SORTED ARRAY 09 23 45 65 89 98 e ad m g in m am o grPr
12. 12. sy ea e ad m g in m am o grPrRESULT:Thus the C-Program was written to implement selection sort using pointers and functionsand the output was verified successfully.
13. 13. EX.NO: IMPLEMENTATION OF MERGE SORTDATE:AIM: To write a C-Program to implement merge sort using divide and conquer strategyALGORITHM: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++) sySTEP 4: Call the function split(a,0,n-1)STEP 5: Print the sorted array a eaSTEP 6: Stop the programFUNCTION MERGE_SORT (int *a, int low, int high) eSTEP 1: Declare the local variable. adSTEP 2: If low is less than high then assign the mean value of low and high to mid mid =(low+high)/2 mSTEP 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) g inFUNCTION SPLIT(int *c, int first, int last) mSTEP 1: Declare the local variablesSTEP 2: Set the while loop till the condition i<=mid && j<=high is failed amSTEP 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] gr j++ k++STEP 5: Else assign a[j] to temp[k] and then increment j and k temp[k]=a[j] & j++ k++ oSTEP 6: Set another while loop till i is less than midPrSTEP 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++)STEP 11: Assign the value of temp[k] to a[k] a[k]=temp[k]
14. 14. 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(); sy printf("Enter the limit"); scanf("%d",&n); ea printf("n Enter the elements"); for(i=0;i<n;i++) { scanf("%d",&a[i]); e } ad split(a,0,n-1); printf("n The sorted list is:"); for(i=0;i<n;i++) m printf("n %d",a[i]); getch(); } g void split(int *c,int first,int last) in { int mid; m if(first<last) { am mid=(first+last)/2; split(c,first,mid); split(c,mid+1,last); gr merge(c,first,mid,mid+1,last); } } o void merge(int *a,int f1,int l1,int f2,intl2)Pr { int i,j,k=0; i=f1; j=f2; while(i<=l1&&j<=l2) { if(a[i]<a[j]) b[k]=a[i++]; else b[k]=a[j++];
15. 15. k++; } while(i<=l1) b[k++]=a[i++]; while(j<=l2) i=f1; j=0; while(i<=l2&&j<k) a[i++]=b[j++] } sy ea e ad m g in m am o grPrOUTPUT:
16. 16. Enter the number of elements:6Enter the array elements 234589980965 syUNSORTED ARRAY ELEMENTS 23 45 89 98 09 65 eaSORTED ARRAY 09 23 45 65 89 98 e ad m g in m am o grPr
17. 17. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement merge sort using pointers and functionsand the output was verified successfully.EX.NO: IMPLEMENTATION OF BINARY SEARCH WITH RECURSIONDATE:
18. 18. AIM: To write a C-Program to implement binary search using recursive functionsALGORITHM: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++) sySTEP 5: Nest another for loop for(j=i+1;j<n;j++) eaSTEP 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] e a[j]=t adSTEP 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++) mSTEP 10: Read the search key as kSTEP 11: Assign low=0 and high=n-1STEP 12: Call the function binsearch(a,k,low,high) gSTEP 13: Check if ans is not equal to1 if so print the position b+i in Else print that element is not foundSTEP 14: Stop the program mFUNCTION BINARY SEARCH (int *x[ ], int x, int low, int high) amSTEP 1: Set a while loop till low is greater than highSTEP 2: Assign mean value of low and high to mid gr mid=(high+low)/2STEP 3: Assign the value of x[mid] to p p=x[mid] oSTEP 4: Check if x<p if so assignPr 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 -1PROGRAM:
19. 19. #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 onen"); for(i=0;i<n;i++) sy scanf("%d",&a[i]); printf("n sorted array n"); ea for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) { e t=a[i]; ad a[i]=a[j]; a[j]=t; } m for(i=0;i<n;i++) printf("t a[%d]=%dn",i,a[i]); printf("t enter the element to search:"); g scanf("%d",&k); in low=0; high=n-1; m ans=binarysearch(a,k,low,high); if(ans!=-1) am printf("nthe number %d is present in the list at location %d",k,ans); else printf(" the number is not present in the list"); gr getch(); } int binarysearch(int *a[],int x,int low,int high) o {Pr int mid,p; if(low>high) return-1; mid=(low+high)/2; p=a[mid]; if(x==p) return(mid); else if(x<p) return binarysearch(a,x,low,mid-1);
20. 20. else return binarysearch(a,x,mid+1,high); } sy ea e ad m g in m am o grPrOUTPUT:
21. 21. Enter the number of elements:6Enter the array elements 234589980965 sySORTED ARRAY 09 23 45 65 89 98 eaEnter the element to search 23The number 23 is present in the list at location 2 e adEnter the element to search 50The number is not present in the list m g in m am o grPr
22. 22. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement binary search using recursive functionsand the output was verified successfully.EX.NO: IMPLEMENTATION OF BINARY SEARCH WITHOUT RECURSIONDATE:
23. 23. AIM: To write a C-Program to implement binary search using non-recursive functionsALGORITHM: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++) sySTEP 5: Nest another for loop for(j=i+1;j<n;j++) eaSTEP 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] e a[j]=t adSTEP 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++) mSTEP 10: Read the search key as kSTEP 11: Assign low=0 and high=n-1STEP 12: Call the function binsearch(a,k,low,high) gSTEP 13: Check if ans is not equal to1 if so print the position b+i in Else print that element is not foundSTEP 14: Stop the program mFUNCTION BINARY SEARCH (int *a[ ], int x, int low, int high) amSTEP 1: Check if low>high if so return -1STEP 2: Else assign mean value of low and high to mid gr mid=(high+low)/2STEP 3: Assign the value of a[mid] to p p=a[mid] oSTEP 4: Check if x= =p if so then return midPrSTEP 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)PROGRAM:
24. 24. #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 NUMBERn "); scanf("%d",&n); printf("Enter array elementsn"); for(i=0;i<n;i++) sy scanf("%d",&a[i]); printf("The sorted the arrayn"); ea for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) { e t=a[i]; ad a[i]=a[j]; a[j]=t; } m for(i=0;i<n;i++) printf("%d",a[i]); printf("nEnter the search elementn"); g scanf("%d",&k); in b=binarysearch(&a,n,k); if(b!=-1) m printf("position:%d",b); else am printf("search element not foundn"); getch(); } gr binarysearch(int *a[],int n,int k) { int mid,low,high,p; o low=0;Pr high=n-1; while(low<=high) { mid=(low+high)/2; p=a[mid]; if(p>k) high=mid-1; else if(p<k) low=mid+1; else if(k==p)
25. 25. return mid; } return-1; } sy ea e ad m g in m am o grPrOUTPUT:
26. 26. Enter the number of elements:6Enter the array elements 234589980965 sySORTED ARRAY 09 23 45 65 89 98 eaEnter the element to search 23The number 23 is present in the list at location 2 e adEnter the element to search 50The number is not present in the list m g in m am o grPr
27. 27. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement binary search without using recursive functions andthe output was verified successfully.EX.NO: IMPLEMENTATION OF QUICK SORTDATE:
28. 28. AIM: To write a C-Program to implement quick sort using pointers and functionsALGORITHM: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 a sySTEP 6: Stop the program eaFUNCTION SORT (int first, int last )STEP 1: Declare the local variable. eSTEP 2: Check if first is less than last ad first < lastSTEP 3: If so then assign the following pivot=a[first] m i=first j=lastSTEP 4: Assign a while loop till the condition g i<j inSTEP 5: Assign a while loop to increment i till a[i]<pivot and i< last mSTEP 6: Assign a while loop to decrement j till a[j] > pivot and j > first amSTEP 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] gr a[j]=tempSTEP 8: Then swap the values of a[j] and a[first] temp=a[j] o a[j]=a[first]Pr a[first]=tempSTEP 9: Call another functions sort(first, j-1) and sort(j+1, last)PROGRAM:
29. 29. #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++) sy scanf("%d",&a[i]); printf("nUNSORTED ARRAY ELEMENTS"); ea for(i=0;i<n;i++) printf("t%d",a[i]); sort(0,n-1); printf("nSORTED ARRAY"); e for(i=0;i<n;i++) ad printf("%d",a[i]); getch(); } m void sort(int first,int last) { int *temp,*pivot,i,j; g if(first<last) in { pivot=a[first]; m i=first; j=last; am while(i<j) { while((a[i]<=pivot)&&(i<last)) gr i++; while((a[j]>=pivot)&&(j>first)) j--; o if(i<j)Pr { temp=a[i]; a[i]=a[j]; a[j]=temp; } } temp=a[first]; a[first]=a[j]; a[j]=temp; sort(first,j-1);
30. 30. sort(j+1,last); } } sy ea e ad m g in m am o grPrOUTPUT:
31. 31. Enter the number of elements:6Enter the array elements one by one 234589980965 syUNSORTED ARRAY ELEMENTS 23 45 89 98 09 65 eaSORTED ARRAY 09 23 45 65 89 98 e ad m g in m am o grPr
32. 32. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement quick sort using functions and pointers and the outputwas verified successfully.EX.NO: IMPLEMENTATION OF INSERTION SORTDATE:
33. 33. AIM: To write a C-Program to implement insertion sort using pointers and functionsALGORITHM: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 a sySTEP 6: Stop the program eaFUNCTION INS_SORT (int *b[], int k )STEP 1: Declare the local variable. eSTEP 2: Set a for loop for p ad for(p=1;p<k;p++)STEP 3: Assign the value of b[p] to temp temp=b[p] mSTEP 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] g b[j]=b[j-1]; in b[j]=temp; mSTEP 6: Assign a while loop to decrement j till a[j] > pivot and j > first amSTEP 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] gr a[j]=tempSTEP 8: Then swap the values of a[j] and a[first] temp=a[j] o a[j]=a[first]Pr a[first]=tempSTEP 9: Call another functions sort(first, j-1) and sort(j+1, last)PROGRAM:
34. 34. #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++) sy scanf("%d",&a[i]); printf("UNSORTED ARRAY:n"); ea for(i=0;i<n;i++) printf("t%d",a[i]); ins_sort(a,n); printf("SORTED ARRAY:n"); e for(i=0;i<n;i++) ad printf("t%d",a[i]); getch(); } m void ins_sort(int *b[], int k) { int j,p,*temp; g for(p=1;p<k;p++) in { temp=b[p]; m for(j=p;j>0&&b[j-1]>temp;j--) b[j]=b[j-1]; am b[j]=temp; } o grPrOUTPUT:
35. 35. Enter the number of elements:6Enter the array elements one by one 234589980965 syUNSORTED ARRAY ELEMENTS 23 45 89 98 09 65 eaSORTED ARRAY 09 23 45 65 89 98 e ad m g in m am o grPr
36. 36. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement insertion sort using pointers and functionsand the output was verified successfully.EX.NO: IMPLEMENTATION OF 8 QUEEN PROBLEMSDATE:
37. 37. AIM: To write a C-Program to implement a 8 queen program using functionsALGORITHM: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 syFUNCTION VOID PLACEQUEEN(int k, int *x) eaSTEP 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) eSTEP 4: If it is 1 then assign the value of i to x[k] ad 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 user mSTEP 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) g inFUNCTION INT CANBEPLACED(int k, int i, int *x) mSTEP 1: Declare the local variablesSTEP 2: Set a for loop for j am for(j=0;j<k;j++)STEP 3: Check for the following condition if((abs(j-k)==abs(x[j]-i)||(x[j]==i))) grSTEP 4: If its true return 0 else return 1FUNCTION VOID SHOWBOARD(int *x) oPrSTEP 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 -PROGRAM:
38. 38. #include<stdio.h> #include<conio.h> #define QUEENNO 8 void placequeen(int,int*); int canbeplaced(int,int,int*); void showboard(int*); void main() { int x[QUEENNO],i; clrscr(); printf("the 8 queens problem"); sy placequeen(0,x); printf("end"); ea getch(); } void placequeen(int k,int *x) { e int i,j; ad char ch; for(i=0;i<8;i++) { m if(canbeplaced(k,i,x)) { x[k]=i; g if(k==7) in { showboard(x); m printf("want to see more?[n->stop, any-> continue]:"); scanf("%c",&ch); am if(ch==n || ch==N) exit(0); } gr if(k<7) placequeen(k+1,x); } o }Pr } 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))) return 0; } return 1;
39. 39. } void showboard(int *x) { int i,j; printf("n----------------------------------------------n"); printf(" "); for(i=0;i<8;i++) { printf("%d",(i+1)); printf(" "); } sy for(i=0;i<8;i++) { ea printf("nn%d",(i+1)); for(j=0;j<8;j++) { if(j==x[i]) e printf("Q"); ad else printf("-"); printf(" "); m } printf(""); } g printf("n----------------------------------------------"); in } m am o grPrOUTPUT:
40. 40. The 8 queens’ problem ------------------ 1 2 3 4 5 6 7 8 1 Q - - - - - - - 2 - - Q - - - - - 3 - - - - Q - - - 4 - - - - - - Q - 5 – Q - - - - - - sy 6 - - - Q - - - - 7 - - - - - Q - - 8 - - - - - - - Q ea ------------------ want to see more?[n->stop, any-> continue]: n e ad m g in m am groPr
41. 41. sy ea e ad m g in m am o grRESULT:PrThus the C-Program was written to implement an 8 queen program using functionsand the output was verified successfully.EX.NO: IMPLEMENTATION OF MINIMUM SPANNING TREE
42. 42. DATE:AIM: To write the C-Program to implement minimum spanning tree using structures, pointers andfunctionsALGORITHM: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 globally sySTEP 5: Call the function create_graph() inside the main functionSTEP 6: Call the function make_tree() eaSTEP 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 e adFUNCTION OF CREATE_GRAPH ( )STEP 1: Declare the local variables mSTEP 2: Read the number of nodes nSTEP 3: Calculate the value of max_edge as max_edge=n*(n-1)/2 gSTEP 4: Set a for loop using i in for(i=0;i<=max_edge;i++)STEP 5: Read the values of origin and destin mSTEP 6: Check whether origin and destin are equal to 0STEP 7: If so exit the loop using break statement amSTEP 8: Read the weight of the current edge wtSTEP 9: Check the following condition if(origin>n||destin>n||origin<=0||destin <=0) grSTEP 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 oPrFUNCTION OF MAKE_TREE ( )STEP 1: Declare the local variablesSTEP 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_treeSTEP 6: Assign the value of root_n1 to father[root_n2]
43. 43. FUNCTION OF INSERT_TREE (int i, int j, int wt )STEP 1: Declare the local variablesSTEP 2: Increment the value of countSTEP 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 variablesSTEP 2: Allocate the memory space of size, struct edge for tmp sySTEP 3: Assign values to tmp->u, tmp->v, tmp->weight.STEP 4: Check for the following condition. ea 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 e q=q->link; ad tmp->link=q->link; q->link=tmp; if(q->link==NULL) m tmp->link=NULL; gFUNCTION OF STRUCT EDGE *DEL_PQUE( ) inSTEP 1: Declare the local variable mSTEP 2: Assign the value of front to tempSTEP 3: print the values of processed edge and return the value of tmp am o grPr
44. 44. PROGRAM: #include<stdio.h> #include<conio.h> #define MAX 20 struct edge { int u; int v; sy int weight; struct edge *link; ea } *front=NULL; int father[MAX]; struct edge tree[MAX]; e int n; ad int wt_tree=0; int count=0; void make_tree(); m void insert_tree(int i, int j, int wt); void insert_pque(int i, int j, int wt); struct edge *del_pque(); g void main() in { int i; m create_graph(); make_tree(); am clrscr(); printf("edge to be included in spanning tree are:n"); for(i=1;i<=count;i++) gr { printf("%d->",tree[i].u); printf("%dn",tree[i].v); o }Pr printf("weight of this minimum spanning tree is: %dn",wt_tree); getch(); } create_graph() { int i,wt,max_edge,origin,destin; printf("enter no. of nodes"); scanf("%d",&n); max_edge=n*(n-1)/2; for(i=0;i<=max_edge;i++)
45. 45. { 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--; sy } else insert_pque(origin,destin,wt); ea } if(i<n-1) { printf("spanning tree is not possible"); e exit(1); ad } return 0; } m void make_tree() { struct edge *tmp; g int node1,node2,root_n1,root_n2; in while(count<n-1) { m tmp=del_pque(); node1=tmp->u; am node2=tmp->v; printf("n1=%d",node1); printf("n2=%d",node2); gr while(node1>0) { root_n1=node1; o node1=father[node1];Pr } while(node2>0) { root_n2=node2; node2=father[node2]; } printf("rootn1=%dn",root_n1); printf("rootn2=%dn",root_n2); if(root_n1!=root_n2) {