Pagini recente » Cod sursa (job #1435391) | Cod sursa (job #2779852) | Cod sursa (job #1899252) | Cod sursa (job #744904) | Cod sursa (job #381065)
Cod sursa(job #381065)
#include<cstdio>
#include<stdlib.h>
using namespace std;
struct nod
{
int inf;
nod *urm;
} *prim[10], *ultim[10], *qp, *qu;
int n, i ,nc, cifc, ok, val;
void push(nod *&prim, nod *&ultim, int val)
{
nod *p;
p = new nod;
p -> inf = val;
p -> urm = NULL;
if (prim == NULL) prim = ultim = p;
else
{
ultim -> urm = p;
ultim = p;
}
}
int pop(nod *&prim, nod *&ultim)
{
int rez;
nod *p;
rez = prim -> inf;
p = prim;
prim = prim -> urm;
delete(p);
return rez;
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d",&n);
for (i = 1; i <= n; ++i)
{
scanf("%d", &val);
push(qp, qu, val);
}
nc = 10; ok = 1;
while (ok)
{
ok = 0;
while (qp != NULL)
{
val = pop(qp, qu);
cifc=(val % nc - val % (nc / 10)) / (nc / 10);
if (cifc) ok = 1;
push(prim[cifc], ultim[cifc], val);
}
nc *= 10;
for (i = 0; i <= 9; ++i)
while (prim[i]!=NULL) push(qp, qu, pop(prim[i], ultim[i]));
}
while (qp != NULL) printf("%d ", pop(qp, qu));
return 0;
}