Varog mul urgent in c++ si cu explicarea programului
Fie o lista liniara L cu elemente de tip Real. De compus un program care din fiecare secvența de elemente succesive egale ale listei considerate, va lăsa doar câte un singur element. De afișat lista modificata.
Răspunsuri la întrebare
Program C++ :
#include <iostream>
using namespace std;
struct nod{
float data;
nod *next;
}L[100];
void eliminare_dubluri(nod *x){
//Daca valoarea nodului curent e egala cu valoarea nodului urmator sterge nodul urmator.
nod *y=x->next;
while(y->next){
if(x->data == y->data){
x->next=y->next;
y=y->next;
}
else{
x=x->next;
y=y->next;
}
}
}
int main(){
int n,i;
//Citire date
cin >> n;
for(i=1;i<=n;i++){
cin >> L[i].data;
L[i].next= &L[i+1];
}
L[n].next=NULL;
//Prelucrare lista
eliminare_dubluri(&L[1]);
//Afisare lista prelucrata
nod *x=&L[1];
while(x->next){
cout << x->data << " ";
x=x->next;
}
cout << x->data << " ";
}
Nota :
Dupa cum observi programul stegre nodurile a caror valoare se repeta. Daca la citirea datelor avem 3 valori de 2 si 2 valori de 6 consecutive, la final avem doar o singura valoare.