Probleme LLSI (clasa)

Se se creeze o lista liniara simplu inlantuita care contine coordonatele a n puncte din plan
    a) sa se numere si sa se afiseze cate puncte se gasesc in cadranul 2
    b)sa se stearga toate nodurile din lista pentru abscisa egala cu dublul ordonatei.


#include < iostream.h >
struct nod
{float x,y;
nod*urm;
}*l,*p,*u,*q;
void creare()
{int n,i;
cout << "n="; cin >> n;
p=new nod;
cout << "x1:"; cin >> p->x;
cout << "y1:"; cin >> p->y;
u=p;
for(i=2;i<=n;i++)
{l=new nod;
  cout << "x" << i << ":";cin >> l->x;
  cout << "y" << i << ":";cin >> l->y;

  u->urm=l;
  u=l;}

u->urm=NULL;
}
void afis()
{l=p;
while(l!=NULL)
{cout << "(" << l->x << "," << l->y << ")";
  l=l->urm;
}
}
void calcul()
{int nr=0;
l=p;
cout << "puncte care se gasesc in cadranul II" << endl;
while(l!=0)
if (l->x<0 && l->y>0) { nr++;
                        cout << "(" << l->x << "," << l->y << ")";;
                        l=l->urm;
                        }
else l=l->urm;
cout << endl << " in cadr 2 sunt " << nr << " puncte" << endl;
}
void stergere()
{l=p;
while(l->urm!=NULL)
{ if(l->urm->x==2*(l->urm->y))
  {q=l->urm;
    l->urm=l->urm->urm;
    delete q;
  }
  else l=l->urm;

  if(p->x==2*(p->y))
  {q=p;
    p=p->urm;
    delete q;
  }
}
}


int main()
{creare();
  afis();
  calcul();
  cout << endl;
  stergere();
  afis();
}








Se citesc n caractere,sa se numere cate sunt vocale si sa se afiseze.

#include < iostream.h >
struct nod
{char v[20];
nod*urm;}
*p,*u,*L;
void creare()
{int i,n;
char x;
cout << "n=";
cin >> n;
L=new nod;
p=L;
u=L;
u->urm=NULL;
for(i=2;i<=n;i++)
{l=new nod;
cin >> l->x;
u->urm=NULL;
u=1;
}
void afis()
{u=p;
while(L!=NULL)
if(L->x=='a' || L->x=='e' || L->x=='i' || L->x=='o' || L->x=='u')
k++;
L=L->urm;
cout << "k" << k;
}
int main()
{creare();
afisare();
}