Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Sa se creeze o lista liniara dublu inlantuita cu noduri care sa contina:
- campul info numar intreg de maxim 4 cifre;
- campurile prec si urm care sa contina informatii de legatura spre nodul anterior, respectiv urmator din lista.
a) Sa se afiseze lista in ambele sensuri
b) Sa se stearga toate nodurile din lista cu exceptia primului si a ultimului nod.

#include<fstream.h>

ifstream f("date.in");
ofstream g("date.out");

struct nodd{int info;
	    nodd *prec,*urm;
	   };
  nodd *prim;

void adaugf(nodd *&prim,int x)
 {nodd *nou=new nodd;
  nou->info=x;
  nou->urm=prim;
  nou->prec=0;
  prim->prec=nou;
  prim=nou;
 }

void creare(nodd *&prim)
 {int x;
  while(f>>x) adaugf(prim,x);
 }

void afis(nodd *prim)
 {nodd *p=prim;
  while(p->urm)
   {g<<p->info<<" ";
    p=p->urm;
   }
  g<<p->info<<endl;
 while(p)
  {g<<p->info<<" ";
   p=p->prec;

  }
 g<<endl;
}

void sterg(nodd *&p)
 {nodd *q,*r;
  q=p->prec;
  r=p->urm;
  q->urm=r;
  r->prec=q;
  delete p;
 }

void main()
 {creare(prim);
  afis(prim);
  nodd *p=prim->urm;
  while(p->urm)
   {nodd *q=p;
    p=p->urm;
    sterg(q);
   }
  afis(prim);

 }



25 apr 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian