Informatică, întrebare adresată de ssd1223dgs, 8 ani în urmă

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.


andrei750238: Nu iti mai raspund daca nu dai coroana la celelalte intrebari. Daca iti faci cont nou pentru fiecare intrebare cred ca uiti sa marchezi si raspunsul castigator...
lucaciucandrei: pai are mai multe de genul, si mie mi-a cerut ajutorul
andrei750238: Stiu ca are mai multe, am raspuns la cateva si a cam uitat sa se intoarca la cele vechi.
lucaciucandrei: bine ca nu te-a chemat la alea de aveau cate 20 de cerinte in ele :)))

Răspunsuri la întrebare

Răspuns de andrei750238
4

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.

Anexe:

lucaciucandrei: tot om cu suflet esti!
ssd1223dgs: M-am conectat la toate conturile unde ai raspus si nu pot sati pun coroana nici la o intrebare
ssd1223dgs: multumesc ca ai raspus la aceasta intrebare
ssd1223dgs: buna poți te rog să-mi explici cum funcționeaza ștergerea și afisarea
andrei750238: In cazul ștergerii : In x avem nodul curent iar in y avem in permanenta nodul urmator. Cat timp exista un nod y urmator comparam data din x cu data din y. Daca datele sunt egale atunci se sterge nodul y. Pur si simplu adresa nodului urmator lui x devine adresa nodului urmator lui y.
andrei750238: Pentru afișare : in x memoram primul nod din listă. Cat timp nodul urmator lui x e nenul (cat timp x nu e ultimul nod) se afiseaza valoarea nodului si x devone nodul urmator
andrei750238: La final se mai afișează datele din ultimul nod (din nodul terminal)
Alte întrebări interesante