list node
unknown
plain_text
2 years ago
2.2 kB
13
Indexable
#include <bits/stdc++.h>
using namespace std;
template <typename T>
class ListNode
{
T data;
ListNode * next, *prev;
public:
ListNode(T d, ListNode<T> *n=nullptr, ListNode<T> *p=nullptr)
{
data = d;
next = n;
prev = p;
}
ListNode* getNext()
{
return next;
}
ListNode* getPrev()
{
return prev;
}
ListNode* getData()
{
return data;
}
void setNext(ListNode <T> *n)
{
if(this->next)
{
this->next->prev = n;
}
n->next = this->next;
this->next = n;
n->prev = this;
}
void setPrevious(ListNode <T> *p)
{
if(this->prev)
{
this->prev->setNext(p);
}
//else{} - za doma
}
void printNode()
{
cout<<"value: "<<this->data<<"\n"<<"prev: "<<this->prev<<"\n"<<"next: "<<this->next<<"\n";
}
//friend znaci deka ima dozovola da do privatnite delovi na klasata
friend ostream& operator<<(ostream& o, const ListNode<T>& v) //istoto go pravi kako printNode, samo u main mozes da pises cout<<el
{
o<<"value: "<<n.data<<"\n"<<"prev: "<<n.prev<<"\n"<<"next: "<<n.next<<"\n";
return o;
}
};
// class SLL
// {
// ListNode* firs;
// public:
// SLL(ListNode& r)
// {
// first = nullptr;
// }
// void add_back(ListNode *n)
// {
// ListNode * n1 = new ListNode(n);
// ListNode* p = first;
// while(!(p->isLast()))
// {
// p = (p-> getNext());
// }
// p -> setNext(n1);
// }
// void add_front(ListNode *n)
// {
// ListNode * n1 = new ListNode(n);
// ListNode* p = root.getNext();
// root.setNext(n);
// n.setNext(*p);
// }
// ListNode* getPrevious(ListNode *c)
// {
// ListNode *p = this->first;
// while(p->getNext()!=c)
// {
// p = p->getNext();
// }
// return p;
// }
// };
int main()
{
// SLL l;
ListNode el(4), el1(5,&el,&el);
el.printNode();
return 0;
}Editor is loading...
Leave a Comment