Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //list.h
- #include <iostream>
- using namespace std;
- template<class T>
- class list
- {
- public:
- //*********************
- class node
- {
- protected:
- node *next;
- node *prev;
- T value;
- public:
- node()
- {
- next=NULL;
- prev=NULL;
- }
- node(T pom)
- {
- next=NULL;
- prev=NULL;
- value=pom;
- }
- node(node* prev1, T data)
- {
- prev = prev1;
- next = NULL;
- value = data;
- }
- node(node *prev1,node *next1,T pom)
- {
- prev=prev1;
- }
- node *get_prev()
- {
- return prev; //wskaźnik do poprzedniego elementu
- }
- node *get_next()
- {
- return next; //wskaźnik do następnego elementu
- }
- T get_value()
- {
- return value;
- }
- void ustaw_next(node *pom)
- {
- next=pom;
- }
- void ustaw_prev(node *pom)
- {
- prev=pom;
- }
- };
- //***************************
- protected:
- node *head;
- node *tail;
- public:
- list()
- {
- head=NULL;
- tail=NULL;
- }
- node *get_head()
- {
- return head;
- }
- node *get_tail()
- {
- if(tail==NULL){
- return head;
- }
- else{
- return tail;}
- }
- void push(T value)
- {
- if (head == NULL) {
- head = new node(value);
- }
- else if(tail==NULL)
- {
- tail = new node(tail, value);
- head->ustaw_next(tail);
- }
- else
- {
- node* nowy = new node(tail, value);
- tail->ustaw_next(nowy);
- tail = nowy;
- }
- }
- void remove(T value)//nie działa
- {
- node *pom=head;
- while(pom->get_next()!=NULL)
- {
- node *pom2=pom->get_next();
- node *pom3=pom2->get_next();
- node *pom4=pom2->get_prev();
- if (pom2->get_value()== value )
- {
- pom->ustaw_next(pom3);
- pom3->ustaw_prev(pom4);
- pom2=NULL;
- delete pom2;
- }
- else
- {pom=pom->get_next();}
- }
- }
- ~list()
- {
- for( node *i=get_head();i!=NULL;i=i->get_next())
- {
- if (i->get_prev() != NULL)
- {
- delete i->get_prev();
- }
- }
- delete get_tail();
- }
- void show()
- {
- for( node *i=get_head() ;i!=NULL;i=i->get_next())
- {
- cout<<i->get_value()<<endl;
- }
- }
- void save()
- {
- ofstream plik;
- plik.open("stan.txt");
- for( node *i=get_head() ;i!=NULL;i=i->get_next())
- {
- plik<<i->get_value();
- }
- };
- T search(T value)
- {
- T pom;
- for( node *i=get_head() ;i!=NULL;i=i->get_next())
- {
- if(i->get_value()==value)
- pom=i->get_value();
- return pom->value;
- else
- return 0;
- }
- }
- };
Add Comment
Please, Sign In to add comment