rendered paste body#include <iostream>
using namespace std;
struct element {
int wartosc ;
element *nastepny ;
element *poprzedni ;
};
class lista {
public:
lista()
{
inf.glowa=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 ;
};
info inf ;
};
/////////////////////////////////////////////
void lista::Insertf(int x){
element *q = new element ;
q->wartosc=x ;
q->nastepny=NULL ;
if(inf.glowa==NULL)
inf.glowa=q;
else {
element * wsk;
wsk = inf.glowa;
while(wsk->nastepny!=NULL) wsk=wsk->nastepny ;
wsk->nastepny=q ;
}
};
/////////////////////////////////////////////
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->nastepny ;
wskaznik->nastepny=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==inf.glowa) {inf.glowa=wskaznik->nastepny; delete wskaznik;}
else {
element * wskaznik2 ;
wskaznik2=inf.glowa ;
while(i<p-1)
{
wskaznik2=wskaznik2->nastepny ;
i++;
};
wskaznik2->nastepny=wskaznik->nastepny;
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-1 && wskaznik->nastepny!=NULL)
{
wskaznik = wskaznik->nastepny ;
i++;
}
if(i==p && wskaznik->poprzedni!=NULL) cout << wskaznik->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;
element *wskaznik2;
wskaznik=inf.glowa;
while(wskaznik->nastepny!=NULL)
{
wskaznik2=wskaznik;
wskaznik = wskaznik->nastepny ;
delete wskaznik2;
}
inf.glowa=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 ;
};