All pastes #413575 Raw Edit

miloszjjj

public text v1 · immutable
#413575 ·published 2007-03-28 15:16 UTC
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 ;
};