# PBinfo #3743 – FAdaugareInceputLLDI – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Se consideră o listă liniară dublu înlănțuită, alocată dinamic, în care elementele sunt de tipul declarat mai jos:
struct nod{
    int info;
    nod * ant,*urm;
};

în care câmpul info memorează un număr întreg, câmpul ant memorează adresa elementului anterior al listei, iar campul urm memorează adresa elementului următor al listei.

Cerința

Să se scrie o funcție C++ cu următorul prototip:
void AdaugareInceput(nod * & prim , nod * & ultim, int x);
care adaugă valoarea x la inceputul listei pentru care primul element are adresa memorată în pointerul prim si ultim element are adresa memorata in pointerul ultim. 


Restricții și precizări

numele funcției va fi AdaugareInceput
dacă lista nu conține niciun element, pointerii prim  si  ultim vor avea valoarea NULL
în toate cazurile, la ieșirea din apel prim va memora adresa primului element al listei, iar ultim va memora adresa ultimului element al listei
structura care definește tipul nod a fost modificată. Solutiile mai vechi nu se mai compilează.

Important
Soluţia propusă va conţine definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
void AdaugareInceput(nod*&prim, nod*&ultim, int x)
{
  if(prim==NULL)
  {
    prim=new nod;
    prim->info=x;
    prim->ant=NULL;
    prim->urm=NULL;
    ultim=prim;
  }
  else
  {
    nod*p=new nod;
    p->info=x;
    p->ant=NULL;
    p->urm= prim;
    prim->ant=p;
    prim=p;
  }
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3743)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3743/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3743/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
