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

De compus programul de creare a unei liste circulare cu cel puțin doua elemente de tip CHAR, apoi de eliminat din aceasta lista toate elementele ce au "vecini" egali(primul si ultimul element de considerat vecine).


andrei750238: Cerinta nu e clara.
Ce sa
andrei750238: Daca avem elemente C A B A B D spre exemplu, se va afisa CAABD sau CD ?

Se sterge elementul imediat ce e gasit sau mai intai se cauta toate perechile care indeplinesc conditita de stergere ?
podgurschisvetlana: CD
podgurschisvetlana: Se va afisa
podgurschisvetlana: Imediat ce sa gasit

Răspunsuri la întrebare

Răspuns de andrei750238
4

Program C++

#include <iostream>

using namespace std;

struct nod

{

   char info;

   nod* next=NULL, * back=NULL;

};

nod* construieste_nod(nod* anterior) {

   nod* curent = new nod;

   curent->back = anterior;

   anterior->next = curent;

   cout << "\nValoare nod : ";

   cin >> curent->info;

   return curent;

}

nod* sterge_nod(nod* nod_de_sters) {

   (nod_de_sters->back)->next = nod_de_sters->next;

   (nod_de_sters->next)->back = nod_de_sters->back;

   nod* temp = nod_de_sters->next;

   delete nod_de_sters;

   return temp;

}

bool se_sterge(nod* curent) {

   if ((curent->back)->info == (curent->next)->info) return 1;

   return 0;

}

void sterge_noduri_vecini_egali(nod* start) {

   while (se_sterge(start))

       start = sterge_nod(start);

   nod* curent=start->next;

   while (curent != start) {

       if (se_sterge(curent))

           curent = sterge_nod(curent);

       else curent = curent->next;

   }

}

void afisare_lista(nod* start) {

   nod* curent = start;

   cout << curent->info << " ";

   curent = curent->next;

   while (curent != start) {

       cout << curent->info << " ";

       curent = curent->next;

   }

}

int main() {

   nod* start=new nod;

   int nr_noduri;

   //Citire si construire noduri

   cout << "Nr noduri : ", cin >> nr_noduri;

   cout << "Valoare nod :", cin >> start->info;

   nod* curent=start;

   while (--nr_noduri) {

       curent=construieste_nod(curent);

   }

   curent->next = start;

   start->back = curent;

   sterge_noduri_vecini_egali(start);

   afisare_lista(start);

}

Anexe:
Alte întrebări interesante