Hello,
I have done the Radix with queue
here you are an example
But the queue is my own Queue
retrieve: return the first element
serve : delete the first element;
dequeue: insertlast
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cstdlib>
#include <ctime>
#include "queue.h"
#define MAX 11
void CopyToLast(Queue<int> []);
int main()
{
Queue<int> q[MAX];
srand(time(0));
int res,i,j,digit = 4,passHelper=10,temp,pos;
cout << "Before Sorting : \n";
for(i=0;i<100;i++) {
res = rand() % 10000;
cout << res << "|";
q[MAX-1].append(res);
}
for(i=0;i<digit;i++) {
while(!q[MAX-1].empty()) {
q[MAX-1].retrieve(temp);
q[MAX-1].serve();
pos=temp;
for(j=0;j<i;j++)
pos/=10;
pos %= 10;
q[pos].append(temp);
}
passHelper *= 10;
CopyToLast(q);
}
cout << "\nAfter sorting :\n";
while(!q[MAX-1].empty()) {
q[MAX-1].retrieve(temp);
cout << temp << "|";
q[MAX-1].serve();
}
return 0;
}
void CopyToLast(Queue<int> g[])
{
int i,temp;
for(i=0;i<MAX-1;i++) {
while(!g[i].empty()) {
g[i].retrieve(temp);
g[MAX-1].append(temp);
g[i].serve();
}
}
} If you want here you are my own queue class