no se porque el siguiente algoritmo no me ejecuta bien de repente se cae y tengo que cerrarlo, puede que sea problemas con los punteros , pero no puedo encontrar a es error żme prodrian ayudar?<br><br><br clear="all">#include <iostream>
<br>#include <stdio.h><br>#include <conio.h><br> <br>using namespace std;<br><br>class element //element <br>{<br>public:<br> int value;<br> element *next;<br> element()<br> {<br> value=0;
<br> next=NULL;<br> }<br>};<br><br>class bucket //bucket containing a perticular range of values <br>{<br>public:<br>element *firstElement;<br>bucket()<br>{<br>firstElement = NULL;<br>}<br>};<br><br>int main()
<br>{<br> int lowend=0; // minimum element <br> int highend=100; //max element <br> int interval=10; //number of intervals <br> const int noBuckets=(highend-lowend)/interval; //number of buckets required
<br> bucket *buckets=new bucket[noBuckets]; <br> bucket *temp;<br><br> for(int a=0;a<noBuckets;a++) //creation of required buckets <br> {<br> temp=new bucket;<br> buckets[a]=*temp;
<br> }<br><br> cout<<"--------The Elements to be Sorted using Bucket sort are ------------------\n";<br> int array[]={12,2,22,33,44,55,66,77,85,87,81,83,89,82,88,86,84,88,99};<br><br> for(int j=0;j<19;j++) //sending elments into appropriate buckets
<br> {<br> cout<<array[j]<<endl;<br> element *temp,*pre;<br> temp=buckets[array[j]/interval].firstElement;<br> if(temp==NULL)//if it is the first element of the bucket<br> {<br> temp=new element;
<br> buckets[array[j]/interval].firstElement=temp;<br> temp->value=array[j];<br> }<br> else<br> {<br> pre=NULL;<br> while(temp!=NULL) //move till the appropriate position in the bucket
<br> {<br> if(temp->value>array[j])<br> break;<br> pre=temp;<br> temp=temp->next;<br> }<br> if(temp->value>array[j]) //if the new value is in betwen or at the begining
<br> {<br> if(pre==NULL) //insertion at first if the bucket has elements already<br> {<br> element *firstNode;<br> firstNode=new element();
<br> firstNode->value=array[j];<br> firstNode->next=temp;<br> buckets[array[j]/interval].firstElement=firstNode;<br> }<br> else //insertion at middle
<br> {<br> element *firstNode;<br> firstNode=new element();<br> firstNode->value=array[j];<br> firstNode->next=temp;
<br> pre->next=firstNode;<br> }<br> }<br> else// if the new value is to be created at last of bucket<br> {<br> temp=new element;
<br> pre->next=temp;<br> temp->value=array[j];<br> }<br><br> }<br> }<br><br> cout<<"------------------------The Sorted Elements Are---------------\n";
<br> for(int jk=0;jk<10;jk++)<br> {<br> element *temp;<br> temp= buckets[jk].firstElement;<br> while(temp!=NULL)<br> {<br> cout<<"*"<<temp->value<<endl;
<br> temp=temp->next;<br> }<br> }<br> cout<<"--------------------------------END--------------------------------\n";<br><br>system("pause");<br><br>return 1;<br>
<br>}<br><br>-- <br><br>