Posts

Develop recursive functions to perform search for a Key value in a given list using (i) Linear Search

\*linear search with recursive *\ #include<stdio.h> int lsearch(int a[],int key,int low,int high); int main() { int a[10],n,key,i,found; printf("\n enter no of elements "); scanf("%d",&n); printf("\n enter %d elements:",n); for(i0;i<n;i++) scanf("%d",&a[i]); printf("\n enter key to search "); scanf("%d".&key); found=lsearch(a,key,0,n-1); if(found==-1) printf("\n unsuccessful search key %d not found in list",key); else printf("\n successful search key %d is available at index %d",key,found); return 0; } int lsearch(int a[],int key,int low,int high) { if(low<=high) { if(key==a[lolw]) return low; else  return lsearch(a,key,low+1,high); } else return-1; }

Develop non-recursive functions to perform search for a Key value in a given list using (i) Linear Search

 \* linear search non recursive*\ #include<stdio.h> int lsearch(int a[],int key,int low,int high); int main() { int a[10],n,key,found; clrscr(); printf("\n enter no of elements"); scanf("%d",&n); printf("\n enter %d elements",n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("\n enter key to search:"); scanf("%d",&key); found=lsearch(a,key,0,n-1) if(found==-1) printf("\n unsuccessful search key not found"); else printf("\n successful search key %d is available at index %d",key,found); return 0; } int lsearch(int a[],int key,int low,int high) { while(low<=high) { if(key==a[low]) return low; else low=low+1; } return-1; }

Implement the following sorting techniques to sort a given list of integers in ascending order (i) Bubble sort

 /* bubble sort*/ #include<stdio.h> void bsort(int a[],int n); int main() { int a[10],i,n; clrscr(); printf("\n enter no of elements:"); scanf("%d",&n); printf("\n enter %d elements:",n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } bsort(a,n); return 0; } void bsort(int a[],int n) { int i,j,k,t; for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } printf("\n after pass %d:",i+1); for(k=0;k<n;k++) printf("%d\t",a[k]); } printf("\n final order:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); }

Develop non-recursive functions to perform search for a Key value in a given list using (i) Binary Search Non Recursive

#include<stdio.h> int binary_search(int a[],int low,int high,int key); int main() { int a[10],i,n,key,found; clrscr(); printf("enter no of elements"); scanf("%d",&n); printf("enter %d elements",n); for(i=0;i<n;i++) scanf("%d",&a[i]); printf("enter key element"); scanf("%d",&key); found=binary_search(a,0,n-1,key); if(found==-1) printf("\n unsuccessful search key %d is not found in the list",key); else printf("\n successful search key %d is found at index %d",key,found); return 0; } int binary_search(int a[],int low,int high,int key) { int mid; while(low<=high) { mid=(low+high)/2; if(key==a[mid]) return mid; else if(key<a[mid]) high=mid-1; else low=mid+1; } return -1; }

Develop recursive functions to perform search for a Key value in a given list using (i) Binary Search Recursion

#include<stdio.h> int binary_search(int a[],int low,int high,int key); int main() { int a[10],i,key,found,n; clrscr(); printf("\n enter no of elements"); scanf("%d",&n); printf("\n enter %d elements",n); for(i=0;i<n;i++) scanf("%d",&a[i]); printf("enter key element"); scanf("%d",&key); found=binary_search(a,0,n-1,key); if(found==-1) printf("\n unsuccessful search key %d is not available in the list",key); else printf("successful search key %d is found at index %d",key,found); return 0; } int binary_search(int a[],int low,int high,int key) { int mid; if(low<=high) { mid=(low+high)/2; if(key==a[mid]) return mid; else if(key<a[mid]) return binary_search(a,low,mid-1,key); else return binary_search(a,mid+1,high,key); } return -1; }

Selection sort

#include<stdio.h> void selsort(int a[],int n); int main() {   int a[10],n,i;   clrscr();   printf("\n enter no.of elements:");   scanf("%d",&n);   printf("\n enter %d elements:",n);   for(i=0;i<n;i++)   {      scanf("%d",&a[i]);   }   selsort(a,n);   return 0; }   void selsort(int a[],int n)       {   int i,j,k,pos,t;   for(i=0;i<n-1;i++)     {        pos=i;        for(j=i+1;j<n;j++) {     if(a[j]<a[pos])     pos=j; }        if(i!=pos)    {       t=a[i];       a[i]=a[pos];       a[pos]=t;    }     printf("\n after pass %d :" ,i+1);     for(k=0;k<n;k++) {    printf("%d\t ",a[k]); }     }  ...

Implement the following sorting techniques to sort a given list of integers in ascending order (i) Insertion Sort

 #include<stdio.h> void ins_sort(int [],int n); int main() {     int n,a[20],i;     clrscr();     printf("enter n value:");     scanf("%d",&n);     printf("enter %d elements",n);     for(i=0;i<n;i++)     {       scanf("%d",&a[i]);     }      ins_sort(a,n);      return 0; }   void ins_sort(int a[],int n)   {     int i,j,ele,k;     for(i=1;i<n;i++)     {      ele=a[i];      j=i-1;      while((ele<a[j]) && j>=0)      {        a[j+1]=a[j];        j=j-1;      }        a[j+1]=ele; printf("\n after pass %d : ",i);        for(k=0;k<n;k++) printf("%d\t",a[k]);     }   }

Delete an element from a singly linked list. SLL

 #include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr,*ptr1; void create(); void traverse(); void delete(); int main() { int ch; clrscr(); header->link=NULL; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Delete\n 3.Traverse\n 4.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2: delete(); break; case 3:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); new->data=x; new->link=header->link; header->link=new; } void traverse() {     if (header->link==NULL)     { printf("\n Link is Empty"); exit(0);      }     else     { printf("\n Data Parts Of Linked List is :"); ptr=header;...

Insert an element into a singly linked list SLL

#include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr; void insert(); void traverse(); int main() { int ch; clrscr(); header->link=NULL; while(1) { printf("\n Enter your Choice\n 1.Insert\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: insert(); break; case 2:traverse(); break; default:exit(0); }    } return 0; } void insert() { int x,pos,key; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data part to insert:"); scanf("%d",&x); printf("\n Enter position to insert \n 1.Insertion at front\n 2.Insertion after key \n 3.Insertion at any\n"); scanf("%d",&pos); if (pos==1) { new->data=x; new->link=header->link; header->link=new; } else if(pos==2) { printf("\n Enter Key after Which we want ...

Create a singly linked list SLL

#include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr; void create(); void traverse(); void delete(); int main() { int ch; clrscr(); header->link=NULL; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2: delete(); break; case 3:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); new->data=x; new->link=header->link; header->link=new; } void traverse() {     if (header->link==NULL)     { printf("\n Link is Empty"); exit(0);      }     else     { printf("\n Data Parts Of Linked List is :"); ptr=header; while(ptr->...

Delete an element from a circular linked list Csll

 #include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr,*ptr1; void create(); void traverse(); void delete(); int main() { int ch; clrscr(); header->link=header; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Delete\n 3.Traverse\n 4.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2: delete(); break; case 3:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); new->data=x; new->link=header->link; header->link=new; } void traverse() {     if (header->link==header)     { printf("\n Link is Empty"); exit(0);      }     else     { printf("\n Data Parts Of Linked List is :"); ptr=hea...

Insert an element into a circular linked list CSLL

 #include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr; void insert(); void traverse(); int main() { int ch; clrscr(); header->link=header; while(1) { printf("\n Enter your Choice\n 1.Insert\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: insert(); break; case 2:traverse(); break; default:exit(0); }    } return 0; } void insert() { int x,pos,key; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data part to insert:"); scanf("%d",&x); printf("\n Enter position to insert \n 1.Insertion at front\n 2.Insertion after key \n 3.Insertion at end\n"); scanf("%d",&pos); if (pos==1) { new->data=x; new->link=header->link; header->link=new; } else if(pos==2) { printf("\n Enter Key after Which we wa...

Create a circular linked list CSLL

 #include<stdio.h> struct node { int data; struct node *link; }*header, *new ,*ptr; void create(); void traverse(); void delete(); int main() { int ch; clrscr(); header->link=NULL; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2: delete(); break; case 3:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); new->data=x; new->link=header->link; header->link=new; } void traverse() {     if (header->link==NULL)     { printf("\n Link is Empty"); exit(0);      }     else     { printf("\n Data Parts Of Linked List is :"); ptr=header; while(ptr-...

Deletion of DLL

 #include<stdio.h> struct node { int data; struct node *llink,*rlink; }*header, *new ,*ptr,*ptr1,*ptr2; void create(); void traverse(); void delete(); int main() { int ch; clrscr(); header->rlink=NULL; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Delete\n 3.Traverse\n 4.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2: delete(); break; case 3:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); ptr=header->rlink; new->data=x; new->llink=header; header->rlink=new; new->rlink=ptr; if(ptr!=NULL) ptr->llink=new; } void traverse() {     if (header->rlink==NULL)     { printf("\n Link is Empty"); exit(0);   ...

Insertion Of DLL

 #include<stdio.h> struct node { int data; struct node *llink,*rlink; }*header, *new ,*ptr,*ptr1; void insert(); void traverse(); int main() { int ch; clrscr(); header->rlink=NULL; while(1) { printf("\n Enter your Choice\n 1.Insert\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: insert(); break; case 2:traverse(); break; default:exit(0); }    } return 0; } void insert() { int x,pos,key; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data part to insert:"); scanf("%d",&x); printf("\n Enter position to insert \n 1.Insertion at front\n 2.Insertion after key \n 3.Insertion at End\n"); scanf("%d",&pos); if (pos==1) { new->data=x; ptr->rlink=header->rlink; new->llink=header; header->rlink=new; new->rlink=ptr; if (p...

Creation Of DLL

 #include<stdio.h> struct node { int data; struct node *llink,*rlink; }*header, *new ,*ptr; void create(); void traverse(); int main() { int ch; clrscr(); header->rlink=NULL; while(1) { printf("\n Enter your Choice\n 1.Create\n 2.Traverse\n 3.Exit\n"); scanf("%d",&ch); switch (ch) { case 1: create(); break; case 2:traverse(); break; default:exit(0); }    } return 0; } void create() { int x; new=(struct node *)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } printf("\n Enter data to insert:"); scanf("%d",&x); new->data=x; ptr=header->rlink; new->llink=header; header->rlink=new; new->rlink=ptr; if(ptr!=NULL) ptr->llink=new; } void traverse() {     if (header->rlink==NULL)     { printf("\n Link is Empty"); exit(0);      }     else     { printf("\n Data Parts Of Linked List...

Implement Queue using linked lists.

 #include<stdio.h> struct node { int data; struct node *link; }*header,*front,*rear,*ptr,*new; void enqueue(); void dequeue(); void traverse(); void status(); int main () { int ch; clrscr(); header->link=NULL; while(1) { printf("\n Enter Your Choice\n 1.Enqueue \n 2.Dequeue\n 3.Traverse\n 4.Status\n 5.Exit\n"); scanf("%d",&ch); switch(ch) { case 1:enqueue(); break; case 2:dequeue(); break; case 3:traverse(); break; case 4:status(); break; default:exit(0); } } return 0; } void enqueue() { int item; new=(struct node*)malloc(sizeof(struct node)); if (new==NULL) { printf("\n No Space"); exit(0); } else { printf("Enter The Element to insert:"); scanf("%d",&item); if(front==NULL&&rear==NULL) { new->data=item; header->link=new; new->link=NULL; front=new; rear=new; } else { new->data...

Implement stack using arrays.

 #include<stdio.h> #define size 5 int stack[size],top=-1; void push(); void pop(); void status(); void traverse(); int main() { int ch; while(1) { printf("\nEnter Your Choice\n 1.Push\n 2.Pop\n 3.Traverse\n 4.Status\n 5.Exit"); scanf("%d",&ch); switch(ch) { case 1:push(); break; case 2:pop(); break; case 3:traverse(); break; case 4:status(); break; default:exit(0); } } return 0; } void push() { int item; if (top==size-1) printf("\n Stack Overflow,insertion not possible"); else { printf("\n Enter data to insert"); scanf("%d",&item); top=top+1; stack[top]=item; } } void pop() { if(top==-1) printf("\n Stack Underflow,pop not possible"); else { printf("\n Deleted item is %d",stack[top]); top=top-1; } } void traverse() { int i; if(top==-1) printf("\n Stack Underflow"); else { for(i=top;i...

To Convert infix expression into postfix expression.

#include<stdio.h> #include<ctype.h> char s[20]; int top=-1; int priority(char c); int main()  {     int i,j;     char infix[30],postfix[30];     printf("\n Enter Infix Expression:");     gets(infix);     for(i=0,j=0;infix[i]!='\0';i++)      {        if(infix[i]=='(') {   top=top+1;   s[top]=infix[i]; }        else if(isalpha(infix[i])||isdigit(infix[i])) {   postfix[j]=infix[i];   j=j+1; }        else if(infix[i]=='+'||infix[i]=='-'||infix[i]=='*'||infix[i]=='/'||infix[i]=='%'||infix[i]=='^')        { if(top==-1)    {      top=top+1;      s[top]=infix[i];    } else    {       if(priority(infix[i])>priority(s[top])) {   top=top+1;   s[top]=infix[i]; }       els...

To evaluate postfix expression.

 #include<stdio.h> #include<ctype.h> #include<math.h> int s[20],top=-1; int main() { char postfix[30]; int op1,op2,i,j,res; printf("\n Enter Postfix Expression:"); gets(postfix); for(i=0;postfix[i]!='\0';i++) { if(isdigit(postfix[i])) { top=top+1; s[top]=postfix[i]-48; } else { op2=s[top--]; op1=s[top--]; switch(postfix[i]) { case '+':res=op1+op2; break; case '-':res=op1-op2; break; case '*':res=op1*op2; break; case '/':res=op1/op2; break; case '%':res=op1%op2; break; case '^':res=pow(op1,op2); break; default:printf("\nInvaid Operator In Postfix Expression"); exit(0); } top=top+1; s[top]=res; } } printf("\n The Result of Postfix Expression is %d",s[top]); return 0; }

Create a Hash Table to perform the following operations (i) Insertion (ii) Deletion (iii) Search

 #include<stdio.h> int htable[15],m=11,k,pos,h,ch,flag,count; void insert(int); void delete(int); int search(int); void display(); int division(int); int multiply(int); int main() { clrscr(); printf("\nHash Functions:"); printf("\nChoose Hash Function\n1.Division\n2.Multiplication"); scanf("%d",&h); while(1) { printf("\nEnter Your Choice\n1.Insert\n2.Delete\n3.Search\n4.Display\n5.Exit"); scanf("%d",&ch); switch(ch) { case 1: if (count>=m) printf("Hash Table is Full.Insertion Not Possible"); else { printf("\nEnter Key to Insert:"); scanf("%d",&k); insert(k); } break; case 2: if(count==0) printf("\nHash Table is Empty"); else { printf("Enter Key to delete:"); scanf("%d",&k); delete(k); } break; case 3: if (count==0) printf("\nHash Table is empty...

Implement Heap sort to sort given set of integers

#include<stdio.h> void heapsort(int a[],int n); void precdown(int [],int,int); int main() {      int a[20],i,n;      printf("\n Enter No Of Elements:");      scanf("%d",&n);      printf("\n Enter %d Elements:",n);      for(i=1;i<=n;i++)   scanf("%d",&a[i]);      heapsort(a,n);      printf("\n After Sorting:");      for(i=1;i<=n;i++) printf("%d\t",a[i]);      return 0; } void heapsort(int a[],int n) {   int i,j,t;   for(i=n/2;i>0;i--)        precdown(a,i,n);   printf("\n Max heap is:");   for(i=1;i<=n;i++)       printf("%d\t",a[i]);   for(j=n;j>0;j--)   {        t=a[1];        a[1]=a[j];        a[j]=t;        n=n-1;        precdown(a,1,n);   } } void...

Implement the DFS Traversals on Graphs.

#include<stdio.h> #define size 10 int s[10],visited[10],a[10][10],top=-1,n,v,w,st; void dfs(int st); void push(int); int  pop(); int instack(int); int main() {     int i,j;     printf("\nEnter no of Vertices:");     scanf("%d",&n);     printf("\nEnter Adjacent Matrix From Given Graph:");     for(i=1;i<=n;i++)     { for(j=1;j<=n;j++) {    scanf("%d",&a[i][j]);    visited[i]=0; }     }  printf("\nEnter Starting Vertex:");  scanf("%d",&st);  printf("\nDFS Travasal of Given Graph");  dfs(st);  return 0; } void dfs(int st) {    push(st);    while(top!=-1)    {        v=pop();        if(visited[v]==0)        {    visited[v]=1;    printf("->%d",v);    for(w=1;w<=n;w++)    {       ...

Implement the BFS Traversals on Graphs.

#include<stdio.h> #define size 10 int q[10],visited[10],a[10][10],f=-1,r=-1,n,v,w,st; void bfs(int st); void enqueue(int); int dequeue(); int inqueue(int); int main() { int i,j; printf("enter no of vertices"); scanf("%d",&n); printf("\nenter adjacent matrix for given graph"); for(i=1;i<=n;i++) {   for(j=1;j<=n;j++)   {      scanf("%d",&a[i][j]);      visited[i]=0;   } } printf("\nenter starting vertex"); scanf("%d",&st); printf("\nbfs traversal of given graph"); bfs(st); return 0; } void bfs(int st) { enqueue(st); while(f!=-1&&r!=-1) { v=dequeue(); if(visited[v]==0) { visited[v]=1; printf("->%d",v); for(w=1;w<=n;w++) { if(a[v][w]==1) { if(visited[w]==0&&inqueue(w)==0) { enqueue(w); } } } } } } void enqueue(int x) { if(r==size-1)     printf("...

Create a Binary Search Tree of integers and perform the following operations (i)insert (ii) delete (iii). Search (iv) traversals (pre-order, in-order, post-order) BST

#include<stdio.h> struct node { int data; struct node *lchild,*rchild; }*root,*ptr,*parent,*new,*ptr1,*x,*y,*p; void insert(int); void delete(int); void search(int); void inorder(struct node *); void preorder(struct node *); void postorder(struct node *); struct node* insucc(struct node *); int main() { int ch,item,key; root=NULL; while(1) { printf("\nEnter Your Choice\n1.Insert\n2.Delete\n3.Search\n4.Inorder\n5.Preorder\n6.Postorder\n7.Exit"); scanf("%d",&ch); switch(ch) { case 1:printf("Enter item:");        scanf("%d",&item);        insert(item);        break; case 2:printf("Enter item:"); scanf("%d",item); delete(item); break; case 3: printf("Enter Key To Search:"); scanf("%d",&key); search(key); break; case 4:inorder(root); break; case 5:preorder(root); break; case 6:postorder(root); break; default:e...