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>