Pagini recente » Cod sursa (job #69871) | Cod sursa (job #1446587) | Cod sursa (job #2482646) | Cod sursa (job #2153146) | Cod sursa (job #755532)
Cod sursa(job #755532)
#include <fstream>
using namespace std;
ifstream fin("infasuratoare.in");
ofstream fout("infasuratoare.out");
struct NODD {double x,y; struct NODD*urm,*pre;};
typedef NODD *ListaD;
ListaD A;
double xs,ys;
void parcurgereis(ListaD prim);
void parcurgeresi(ListaD ult);
void inserare (ListaD &prim, double x,double y, ListaD p);
void sterge (ListaD &prim, ListaD p);
void crearec(ListaD &prim);
int main()
{
crearec(A);
return 0;
}
void crearec(ListaD &prim)
{
prim=NULL; ListaD ultimul;
double x,y;
int n;
fin>>n; if (!n) return;
fin>>x>>y;
if (x<xs || (x==xs && y<ys))
xs=x; ys=y;
inserare(prim,x,y,NULL);
ultimul=prim;
for (int i=1;i<n;i++)
{
fin>>x>>y;
inserare(prim,x,y,ultimul);
ultimul=ultimul->urm;
}
}
void parcurgereis (ListaD prim)
{
ListaD p;
for (p=prim; p; p=p->urm);
// fout<<p->inf<<" ";
}
void parcurgeresi (ListaD ult)
{
ListaD p;
for (p=ult; p; p=p->pre);
//fout<<p->inf<<" ";
}
void inserare (ListaD &prim, double x, double y, ListaD p)
//p indica adresa nodului dupa care se face inserarea
{
ListaD q=new NODD;
q->x=x;
q->y=y;
if (!p) //inserez la inceput
{
q->urm=prim;
q->pre=NULL;
prim=q;
}
else //inserez dupa nodul indicat de p
{
q->urm=p->urm;
q->pre=p;
if (p->urm) q->urm->pre=q;
p->urm=q;
}
}
void sterge (ListaD &prim, ListaD p)
{
ListaD pp=p->pre, pu=p->urm;
if (pp) pp->urm=pu;
else prim=pu;
if (pu) pu->pre=pp;
delete p;
}