rendered paste body#include <iostream>
using namespace std;
struct element {
int wartosc ;
element *nastepny ;
element *poprzedni ;
};
class lista {
public:
lista()
{
inf.glowa=inf.ogon=NULL ;
};
void Insertf(int x);
void Insert(int x, int p);
void Delete(int p);
int Locate(int x);
void Retrive(int p);
void Next(int p);
void Previous(int p);
void First();
void Printlist();
void Makenull();
private :
struct info
{
element *glowa ;
element *ogon ;
};
info inf ;
};
/////////////////////////////////////////////
void lista::Insertf(int x){
element *q = new element ;
q->wartosc=x ;
q->nastepny=NULL ;
q->poprzedni=NULL ;
if(inf.glowa==NULL)
inf.glowa=inf.ogon=q;
else {
q->poprzedni=inf.ogon;
inf.ogon->nastepny=q;
inf.ogon=q;
}
//inf.licznik++;
};
/////////////////////////////////////////////
void lista::Insert(int x, int p){
if(inf.glowa==NULL) {Insertf(x); return;}
element * wskaznik;
wskaznik=inf.glowa ;
int i=1;
while(i<p && wskaznik->nastepny!=NULL)
{
wskaznik=wskaznik->nastepny ;
i++;
}
if(i<p) Insertf(x);
else {
element *q = new element ;
q->wartosc=x ;
q->nastepny=wskaznik ;
q->poprzedni=wskaznik->poprzedni;
wskaznik->poprzedni->nastepny=q;
wskaznik->poprzedni=q;
};
};
/////////////////////////////////////////////
void lista::Delete(int p){
if(inf.glowa!=NULL) {
int i=1;
element * wskaznik ;
wskaznik=inf.glowa ;
while(i<p && wskaznik->nastepny!=NULL)
{
wskaznik=wskaznik->nastepny ;
i++;
};
if(wskaznik->nastepny==NULL && i!=p) return;
else {
if(wskaznik->poprzedni==NULL) {inf.glowa=wskaznik->nastepny; delete wskaznik;}
else {
wskaznik->poprzedni->nastepny=wskaznik->nastepny;
if(wskaznik->nastepny==NULL) {inf.ogon=wskaznik->poprzedni;}
delete wskaznik ;
};
};
};
};
////////////////////////////////////////////
void lista::Printlist() {
element *wskaznik ;
if(inf.glowa!=NULL){
wskaznik=inf.glowa;
while(wskaznik->nastepny!=NULL)
{
cout << wskaznik->wartosc << ", ";
wskaznik = wskaznik->nastepny ;
}
cout << wskaznik->wartosc << endl ;
}
else cout << "Lista jest pusta" << endl ;
};
////////////////////////////////////////////
int lista::Locate(int x) {
if(inf.glowa!=NULL) {
element *wskaznik ;
wskaznik=inf.glowa;
int i=1;
while(wskaznik->wartosc!=x && wskaznik->nastepny!=NULL)
{
wskaznik = wskaznik->nastepny ;
i++;
}
if(wskaznik->wartosc==x) return i;
else return -1 ;
}
else {cout << "Lista jest pusta" << endl ;
return -1 ;}
};
////////////////////////////////////////////
void lista::Retrive(int p) {
if(inf.glowa!=NULL) {
element *wskaznik;
wskaznik=inf.glowa;
int i=1;
while(i<p && wskaznik->nastepny!=NULL)
{
wskaznik = wskaznik->nastepny ;
i++;
}
if(i==p) cout << wskaznik->wartosc << endl;
}
else {cout << "Lista jest pusta" << endl ;
return;}
};
////////////////////////////////////////////
void lista::Next(int p) {
if(inf.glowa!=NULL) {
element *wskaznik ;
wskaznik=inf.glowa;
int i=1;
while(i<p && wskaznik->nastepny!=NULL)
{
wskaznik = wskaznik->nastepny ;
i++;
}
if(i==p && wskaznik->nastepny!=NULL) cout << wskaznik->nastepny->wartosc << endl;
else {cout << "Ciemnosc! Widze ciemnosc!"<< endl;}
}
else {cout << "Lista jest pusta" << endl ;
return;}
};
////////////////////////////////////////////
void lista::Previous(int p) {
if(inf.glowa!=NULL) {
element *wskaznik;
wskaznik=inf.glowa;
int i=1;
while(i<p && wskaznik->nastepny!=NULL)
{
wskaznik = wskaznik->nastepny ;
i++;
}
if(i==p && wskaznik->poprzedni!=NULL) cout << wskaznik->poprzedni->wartosc << endl;
else {cout << "Ciemnosc! Widze ciemnosc!"<< endl;}
}
else {cout << "Lista jest pusta" << endl ;
return;}
};
////////////////////////////////////////////
void lista::First() {
if(inf.glowa!=NULL) {
cout << inf.glowa->wartosc << endl ;
}
else cout << "Lista jest pusta" << endl ;
return;
};
/////////////////////////////////////////////
void lista::Makenull() {
if(inf.glowa!=NULL) {
element *wskaznik;
wskaznik=inf.ogon;
while(wskaznik->poprzedni!=NULL)
{
wskaznik = wskaznik->poprzedni ;
delete wskaznik->nastepny;
}
inf.glowa=inf.ogon=NULL;
}
cout << "Lista jest pusta" << endl ;
return;
};
/////////////////////////////////////////////
int main()
{
lista test ;
test.Insertf(12);
test.Insertf(46);
// test.Insertf(26);
// test.Insertf(11);
test.Insert(666,2);
test.Insert(667,77);
test.Printlist();
test.Next(2);
test.First();
test.Makenull();
test.Printlist();
char d;
cin >> d ;
};