Cod sursa(job #639690)

Utilizator Agent008Cristi Poputea Agent008 Data 23 noiembrie 2011 19:48:40
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
//lista dublu inlantuita,inseram un
#include<iostream.h>
#include<fstream.h>
fstream f("exe3.in",ios::in), g("exe3.out",ios::out);
struct nod
{
	int info;
	nod *st,*dr;
};
nod *prim,*sf;
void citire(nod *&prim,nod *&sf,int nr);
void afisare(nod *&prim,nod *&sf);
void adaug(nod *&prim,nod *&sf,int x);
int n;
int main()
{
	int x;
	while(f>>x && x!=0)
		citire(prim,sf,x);
	f>>x;
	
	adaug(prim,sf,x);
	afisare(prim,sf);
	return 0;
}
void citire(nod *&prim,nod *&sf,int nr)
{
	nod *p,*q;
	p=new nod;
	p->info=nr;
	p->st=0;
	p->dr=0;
	if(prim==0)
	{	prim=p;
		sf=p;
	}
	else
	{
		q=sf;
		q->dr=p;
		p->st=q;
		sf=p;
	}
}
void afisare(nod *&prim,nod *&sf)
{
	nod *p;
	p=prim;
	while(p->dr!=0)
	{	cout<<p->info<<" ";
		p=p->dr;
	}
	cout<<p->info;
}
void adaug(nod *&prim,nod *&sf,int x)
{
	nod *p,*q,*z;
	p=prim;
	q=sf;
	while(p->dr!=q->st && p->dr!=q)
	{
		p=p->dr;
		q=q->st;
		
	}
	if(p->dr==q)
	{
		z=new nod;
		p->dr=z;
		z->st=p;
		z->dr=q;
		z->info=x;
		q->st=z;
	}	
	else
	{
		p=p->dr;
		z=new nod;
		p->dr=z;
		z->st=p;
		z->dr=q;
		z->info=x;
		q->st=z;
	}
}