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;
}
}