Ajutor va rog mult
1. Se consideră următoarea declarație:
struct nod {
int inf;
nod *urm; };
typedef struct nod * Lista;
a) Creați o lista simplu înlănțuită până la introducerea elementului cu valorea 100;
b) Scrieţi o funcţie care să primească ca parametru adresa primului nod al unei liste simplu înlănţuite şi care să returneze numărul de noduri ale listei, a cărei informație utilă este număr nenegativ par.
c) Sa se scrie o functie care primeste ca parametru adresa primului nod al listei si insereaza in fata fiecarui nod care memoreaza o valoare nenegativa un nod care sa memoreze dublul acestuia.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
struct nod{
int inf;
nod *urm;
}*lista;
void adaugareFinal(nod *&lista, int x){
nod *q = new nod;
q -> inf = x;
q -> urm = NULL;
if(lista == NULL)
lista = q;
else{
nod *t = lista;
while(t -> urm)
t = t -> urm;
t -> urm = q;
}
}
int f(nod *lista){
int nrPoz = 0;
for(nod *p=lista; p; p=p->urm)
if(((p -> inf)%2 == 0) && ((p -> inf) >= 0))
++nrPoz;
return nrPoz;
}
void adaugareMijloc(nod *mij, int x){
nod *q = new nod;
q -> inf = x;
q -> urm = mij -> urm;
mij -> urm = q;
}
void dublare(nod *lista){
nod *q = lista;
while(q){
if(q -> inf >= 0){
adaugareMijloc(q, q->inf*2);
q = q -> urm;
}
q = q -> urm;
}
}
void afisare(nod *lista){
for(nod *p=lista; p; p=p->urm)
cout << p -> inf << ' ';
}
int main()
{
int nr;
cin >> nr;
while(nr != 100){
adaugareFinal(lista, nr);
cin >> nr;
}
cout << f(lista) << endl;
dublare(lista);
afisare(lista);
return 0;
}
cout<