Pagini recente » Cod sursa (job #2796894) | Cod sursa (job #850431) | Cod sursa (job #629478) | Cod sursa (job #1872930) | Cod sursa (job #419288)
Cod sursa(job #419288)
#include<fstream.h>
#include<iostream.h>
struct nod{
int evenim;
nod *urm;
} *cap[100];
ofstream g("sortaret.out");
int initializare(int n,int v[100]){
int i;
for (i=1;i<=n;i++)
v[i]=0;
return 0;
}
int adaugare(int i,int j){
nod *aux,*p;
aux=new nod;
aux->evenim=j;
aux->urm=NULL;
if(cap[i]==NULL)
cap[i]=aux;
else{
p=cap[i];
while(p->urm!=NULL)
p=p->urm;
p->urm=aux;
}
return 0;
}
int afisare_lista(int i){
nod *p;
p=cap[i];
while(p!=NULL){
cout<<p->evenim<<" ";
p=p->urm;
}
cout<<"\n";
return 0;
}
int citire(int &n,int v[100]){
int i,j;
ifstream f("sortaret.in");
f>>n;
//cout<<n<<"\n";
initializare(n,v);
while(!f.eof()){
f>>i>>j;
//cout<<i<<" "<<j<<"\n";
v[j]++;
adaugare(i,j);
}
f.close();
/*for(i=1;i<=n;i++){
cout<<"\n lista "<<i<<"\n";
afisare_lista(i);
//cout<<v[i]<<" ";
}*/
return 0;
}
int sortare(int n,int v[100])
{
int ok=0,i;
nod *p;
while(ok==0){
for(i=1;i<=n;i++)
{
if(v[i]==0){
g<<i<<" ";
v[i]=-1;
break;
}
}
if(i>n)
ok=1;
else{
p=cap[i];
while(p!=NULL)
{
v[p->evenim]--;
p=p->urm;
}
}
}
return 0;
}
int main(){
int n,v[100];
citire(n,v);
sortare(n,v);
}