Você está na página 1de 12

1. Write a program to implement stack using link list.

/* STACK using Linked Lists * #include<conio.h> #include<stdio.h> #include<stdlib.h> struct node { int data; struct node *prev; }*top=NULL, *temp=NULL; void push() { temp = (struct node*)malloc(sizeof(struct node*)); printf("\nEnter Data:"); scanf("%d",&temp->data); temp->prev=NULL; if(top==NULL) { top=temp; } else { temp->prev=top; top=temp; } } void pop() { temp=top->prev; top=temp; printf("\nDeleted: %d!!",top->prev); } void display() { temp=top; while(temp!=NULL) { printf("\n| %d | %d |",temp->prev,temp->data); temp=temp->prev;

} } int menu() { int ch; printf("\n Stack using Linked Lists"); printf("\n1.Push\n2.Pop\n3.Display\n4.Exit"); printf("\nEnter your choice:"); scanf("%d",&ch); return ch; } int main() { int ch; do { ch=menu(); switch(ch) { case 1:push(); break; case 2:pop(); break; case 3:display(); break; case 4:exit(1); default:printf("\nEnter a valid option!!"); } }while(1); }

2. Write a program to implement queue using link list. #include<stdio.h> #include<stdlib.h> #include<conio.h> struct node { int info; struct node *link; }*front = NULL, *rear = NULL; void insert(); void delet(); void display(); int item; main() { int ch; do { printf("\n\n1.\tInsert\n2.\tDelete\n3.\tDisplay\n4.\tExit\n"); printf("\nEnter your choice: "); scanf("%d", &ch);

switch(ch) { case 1: insert(); break; case 2: delet(); break; case 3: display(); break; case 4: exit(0); default: printf("\n\nInvalid choice. Please try again...\n"); } } while(1); getch(); } void insert() { printf("\n\nEnter ITEM: "); scanf("%d", &item); if(rear == NULL) { rear = (struct node *)malloc(sizeof(struct node)); rear->info = item; rear->link = NULL; front = rear; } else { rear->link = (struct node *)malloc(sizeof(struct node)); rear = rear->link; rear->info = item; rear->link = NULL; } } void delet() { struct node *ptr;

if(front == NULL) printf("\n\nQueue is empty.\n"); else { ptr = front; item = front->info; front = front->link; free(ptr); printf("\nItem deleted: %d\n", item); if(front == NULL) rear = NULL; } } void display() { struct node *ptr = front; if(rear == NULL) printf("\n\nQueue is empty.\n"); else { printf("\n\n"); while(ptr != NULL) { printf("%d\t",ptr->info); ptr = ptr->link; } } }

3. Write a program to implement merge sort algorithm. #include <stdio.h> #include <stdlib.h> #include<conio.h> #define MAXARRAY 100 void mergesort(int a[], int low, int high); int main(void) { int array[MAXARRAY],n; int i = 0; /* reading the elements form the users*/ printf("Enter the number of elements to be sorted:"); scanf("%d",&n); printf("Enter the elements to be sorted:\n"); for(i = 0; i < n; i++ ){ scanf("%d",&array[i]); } /* array before mergesort */

printf("Before sorting:"); for(i = 0; i < n; i++) printf(" %d", array[i]); printf("\n"); mergesort(array, 0, n - 1); /* array after mergesort */ printf("After Mergesort:"); for(i = 0; i < n; i++) printf(" %d", array[i]); printf("\n"); getch(); } void mergesort(int a[], int low, int high) { int i = 0; int length = high - low + 1; int pivot = 0; int merge1 = 0; int merge2 = 0; int working[length]; if(low == high) return; pivot = (low + high) / 2; mergesort(a, low, pivot); mergesort(a, pivot + 1, high); for(i = 0; i < length; i++) working[i] = a[low + i]; merge1 = 0; merge2 = pivot - low + 1; for(i = 0; i < length; i++) { if(merge2 <= high - low) if(merge1 <= pivot - low) if(working[merge1] > working[merge2]) a[i + low] = working[merge2++];

else a[i + low] = working[merge1++]; else a[i + low] = working[merge2++]; else a[i + low] = working[merge1++]; } }

4. Write a program to implement merge sort algorithm. #include <stdio.h> #include<conio.h> main() { int m1[10][10],i,j,k,m2[10][10],mult[10][10],r1,c1,r2,c2; printf("Enter number of rows and columns of first matrix (less than 10)\n"); scanf("%d%d",&r1,&c1); printf("Enter number of rows and columns of second matrix (less than 10)\n"); scanf("%d%d",&r2,&c2); if(r2==c1) { printf("Enter rows and columns of First matrix \n"); printf("Row wise\n"); for(i=0;i<r1;i++)

for(j=0;j<c1;j++) scanf("%d",&m1[i][j]); printf("First Matrix is :\n"); for(i=0;i<r1;i++) { for(j=0;j<c1;j++) printf("%d\t",m1[i][j]); printf("\n"); } printf("Enter rows and columns of Second matrix \n"); printf("Row wise\n"); for(i=0;i<r2;i++) for(j=0;j<c2;j++) scanf("%d",&m2[i][j]); printf("Second Matrix is:\n"); for(i=0;i<r2;i++) { for(j=0;j<c2;j++) printf("%d\t",m2[i][j]); printf("\n"); } printf("Multiplication of the Matrices:\n"); for(i=0;i<r1;i++) { for(j=0;j<c2;j++) { mult[i][j]=0; for(k=0;k<r1;k++) mult[i][j]+=m1[i][k]*m2[k][j]; printf("%d\t",mult[i][j]); } printf("\n"); } } else { printf("Matrix multiplication cannot be done"); } getch(); }

5. Write a program to implement 0/1 knapsack problem. #include<stdio.h> #include<conio.h> int max(int a,int b) { if(a>b) return a; else return b; } void knapsack(int m,int n,int w[],int p[]) { int v[10][10],x[10],i,j; for(i=0;i<=n;i++) {

for(j=0;j<=m;j++) { if(j==0||i==0) v[i][j]=0; if(j-w[i]<0) v[i][j]=v[i-1][j]; else v[i][j]=max(v[i-1][j],v[i-1][j-w[i]]+p[i]); } } for(i=0;i<=n;i++) { for(j=0;j<=m;j++) printf("%d\t",v[i][j]); printf("\n"); } printf("THE OPTIMAL SOLUTION IS:%d",v[n][m]); for(i=1;i<=n;i++) x[i]=0; i=n; j=m; while(i>0 && j>0) { if(v[i][j]!=v[i-1][j]) { x[i]=1; j=j-w[i]; } i--; } printf("THE OPTIMAL SET OF WEIGHTS IS:"); for(i=1;i<=n;i++) if(x[i]==1) printf("%d\t",i); printf("\n"); } int main() { int w[10],p[10],i,m,n; printf("ENTER THE NUMBER OF ITEMS:");

scanf("%d",&n); printf("ENTER THE WEIGHTS OF THE ITEMS:"); for(i=1;i<=n;i++) scanf("%d",&w[i]); printf("ENTER THE PROFITS OF THE ITEMS:"); for(i=1;i<=n;i++) scanf("%d",&p[i]); printf("ENTER THE CAPACITY OF KNAPSACK:"); scanf("%d",&m); knapsack(m,n,w,p); getch(); }

6. Write a program to implement graph traversal technique.

7.

Você também pode gostar