My Profile
Active Members
TodayLast 7 Days
more...
Awards & Gifts
Online Exams
Fresher Jobs
Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian
cities including Bangalore, Chennai, Hyderabad, Pune or Kochi
Resources
Find educational articles, blogs, discussion threads and other resources.
Colleges
Find details about any college in India or search for courses.
|
C Program for insertion and deletion in heap
Posted Date: 24 Mar 2008 Resource Type: Articles/Knowledge Sharing Category: Computer & Technology
|
Posted By: ashish singh Member Level: Diamond Rating: Points: 4
|
|
|
|
/* Program for insertion and deletion in heap */ # include int arr[100],n; main() { int choice,num; n=0;/*Represents number of nodes in the heap*/ while(1) { printf("1.Insert\n"); printf("2.Delete\n"); printf("3.Display\n"); printf("4.Quit\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice) { case 1: printf("Enter the number to be inserted : "); scanf("%d",&num); insert(num,n); n=n+1; break; case 2: printf("Enter the number to be deleted : "); scanf("%d",&num); del(num); break; case 3: display(); break; case 4: exit(); default: printf("Wrong choice\n"); }/*End of switch */ }/*End of while */ }/*End of main()*/
display() { int i; if(n==0) { printf("Heap is empty\n"); return; } for(i=0;i printf("%d ",arr[i]); printf("\n"); }/*End of display()*/
insert(int num,int loc) { int par; while(loc>0) { par=(loc-1)/2; if(num<=arr[par]) { arr[loc]=num; return; } arr[loc]=arr[par]; loc=par; }/*End of while*/ arr[0]=num; /*assign num to the root node */ }/*End of insert()*/
del(int num) { int left,right,i,temp,par;
for(i=0;i { if(num==arr[i]) break; } if( num!=arr[i] ) { printf("%d not found in heap\n",num); return; } arr[i]=arr[n-1]; n=n-1; par=(i-1)/2; /*find parent of node i */ if(arr[i] > arr[par]) { insert( arr[i],i); return; } left=2*i+1; /*left child of i*/ right=2*i+2; /* right child of i*/ while(right < n) { if( arr[i]>=arr[left] && arr[i]>=arr[right] ) return; if( arr[right]<=arr[left] ) { temp=arr[i]; arr[i]=arr[left]; arr[left]=temp; i=left; } else { temp=arr[i]; arr[i]=arr[right]; arr[right]=temp; i=right; } left=2*i+1; right=2*i+2; }/*End of while*/ if( left==n-1 && arr[i] { temp=arr[i]; arr[i]=arr[left]; arr[left]=temp; } }/*End of del()*/
|
Responses
|
No responses found. Be the first to respond and make money from revenue sharing program.
|
|
Watch TV Channels
|