Lista usuwanie par, mala pomoc;

0

Witam napisałemw c++ program tworzący listę danych która zawiera liczby całkowite, chciałbym zaimplementować usuwanie pary (czyli majac lista 1-2-3-2-3 znajdzie te 2 i je usunie) tylko nie za bardzo potrafię to zaimplementować, czy ktoś mógłby mi dać mała wskazówkę. Z góry dziękuje za pomoc
Przesyłam kody źródłowe:

#ifndef lista_h
#define lista_h
#include <iostream>
using namespace std;
struct lista{
private:
    struct box{
    int liczba;
    box *nastepny;
    };

    box * H=NULL;
    int ile_jest;

public:
    void wypisz();
    void wstaw(int x);
    void usun_poczatek();
    void usun_caly();
    void usun_koniec();
    void usun_pary();
};


#endif // lista_h


#include "lista.h"

void lista::wstaw(int x){
    box * tmp= new box; //dodawanie na koniec listy
    if (H==NULL){
          tmp ->liczba=x;
    tmp ->nastepny=H;
    H=tmp;
    }else{
    tmp ->liczba=x;
    box* p=H;
    while (p->nastepny != NULL)
        p=p->nastepny;
        p->nastepny=tmp;
       tmp->nastepny=NULL;
       ile_jest++;}
       /*box *tmp = new box; //dodawanie na poczatku listy
       tmp-> liczba=x;
       tmp->nastepny=H;
       H=tmp;*/
}


void lista::wypisz(){
    box *p=H;
    cout<<"GLOWA -> ";
    while(p!=NULL){
    cout<<p->liczba<<" -> ";
    p=p->nastepny;
    }
    cout<<"OGON";

}
void lista::usun_poczatek(){
    box *p=H;
    H=H->nastepny;
    delete p;
}

void lista::usun_caly(){
    box *p=H;
    H=NULL;
    delete p;
}
void lista::usun_koniec(){
    box *p=H;
    if (p==NULL)
        cout<<"Pusta lista"<<endl;
    else if (p->nastepny==NULL){
        H=NULL;
        delete p;
    }else{
    while (p->nastepny !=NULL){
        p=p->nastepny;
    }
        box *a=H;
        while (a->nastepny!=p){
            a=a->nastepny;
        }
    a->nastepny=p->nastepny;
    delete p;

}
}
void lista::usun_pary(){
    box *p=H;
    box *lazik1=new box;
    box *lazik2=new box;
    for (int i=0;i>ile_jest;i++){
    lazik1->nastepny->liczba;
    lazik2->nastepny->liczba;
    if (lazik1==lazik2){
        delete lazik1;
        delete lazik2;
    }
    lazik1++;
    lazik2++;
    }



}


#include "lista.h"
int main(){
    lista l;
    int x;
    cout<<"Podaj liczbe," <<endl;
    cout<<"999 konczy," <<endl;
    cout<<"888 usuwa koniec," <<endl;
    cout<<"777 usuwa calosc," <<endl;
    cout<<"666 usuwa poczatek," <<endl;
    cout<<"555 usun pary:" <<endl;

   while(true)
        {

            cin>>x;
         if(x==999) break;
         if(x==666) {l.usun_poczatek(); goto wypisz;}
         if(x==777) {l.usun_caly(); goto wypisz;}
         if(x==888) {l.usun_koniec(); goto wypisz;}
         if(x==555) {l.usun_pary(); goto wypisz;}
            l.wstaw(x);
            wypisz:
            l.wypisz();
            cout<<endl;


        }

}

1

Musisz wziąć sobie jeden int i porównywać go w pętli z każdym następnym. Jeśli znajdziesz o tej samej wartości, to go usuwasz.
Zrób sobie jeszcze funkcję void usun (int numer): aby usunąć element bierzesz poprzedzający element i ustawiasz wskaźnik na następny na ten co chcesz usunąć.
Nie używaj polskich nazw zmiennych i funkcji.

0

znaczy uzywam polskich nazw bo nie bede oszukiwał to ściąga na kolokwium :P Wiesz cała struktura sobie wkleje i będzie więcej czasu na jakieś głupkowate zadania od doktorki :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1