#include <iostream>
using namespace std;
class Element
{
private:
int v;
Element* next;
public:
Element()
{
v = 0;
next = nullptr;
}
Element(int x, Element* next)
{
v = x;
this->next = next;
}
int getValue()
{
return v;
}
void setValue(int v)
{
this->v = v;
this->v = v;
}
Element* getNext()
{
return next;
}
void setNext(Element* p)
{
next = p;
}
};
class LinkedList
{
private:
Element* head;
Element* tail;
int size;
public:
LinkedList()
{
head = nullptr;
tail = nullptr;
size = 0;
}
bool empty()
{
if (size == 0)
return true;
else
return false;
}
int getSize()
{
return size;
}
Element* getFirst()
{
return head;
}
Element* getLast()
{
return tail;
}
Element* getNext(Element* p)
{
return p->getNext();
}
Element* getPrev(Element* p)
{
Element* tmp = head;
do
{
if (tmp->getNext() == p)
return tmp;
else
tmp = tmp->getNext();
} while (tmp->getNext() != p);
return nullptr;
}
int retrive(Element* p)
{
return p->getValue();
}
Element* locate(int x)
{
Element* tmp = head;
for(int i = 0; i < size; i++)
{
tmp = tmp->getNext();
if (tmp->getValue() == x)
return tmp;
}
return nullptr;
}
void append(int x)
{
if (empty())
{
head = new Element(x, nullptr);
tail = head;
}
else
{
tail->setNext(new Element(x, nullptr));
tail = tail->getNext();
}
size++;
}
void insert(Element* p, int x)
{
p->setValue(x);
}
void del(Element* p)
{
if (p == head)
{
head = head->getNext();
delete p;
if (head == nullptr)
tail = nullptr;
}
else
{
Element* tmp = getPrev(p);
tmp->setNext(getNext(p));
delete p;
if (getNext(tmp) == nullptr)
tail = tmp;
}
size--;
}
void clear()
{
Element* tmp;
while (head != nullptr)
{
tmp = getNext(head);
delete head;
head = tmp;
}
}
friend ostream& operator<<(ostream& out, LinkedList* l)
{
Element* tmp = l->head;
for (int i = 0; i < l->getSize(); i++)
{
out << tmp->getValue() << " | ";
tmp = tmp->getNext();
}
return out;
}
void insert(int p, int x)
{
Element* tmp = head;
for (int i = 0; i < p; i++)
{
tmp = tmp->getNext();
}
Element* tmp2 = tmp;
for (int i = p; i < size; i++)
{
tmp->setValue(x);
tmp->setNext(tmp2);
tmp = tmp2;
tmp2 = tmp2->getNext();
}
size++;
tail = tmp2;
}
void del(int p)
{
Element* tmp = head;
for (int i = 0; i < p; i++)
{
tmp = tmp->getNext();
}
del(tmp);
}
~LinkedList();
};
int main()
{
//Zadanie 5.1 - test
cout << endl << "Zadanie 5.1 - test" << endl;
LinkedList* a = new LinkedList();
cout << endl << "empty(): 1 - " << a->empty();
cout << endl << "getSize(): 0 - " << a->getSize();
cout << endl << "append(4): 4 | - "; a->append(4); cout << " " << a;
cout << endl << "append(6): 4 | 6 | - "; a->append(6); cout << " " << a;
//cout << endl << ": -" << ;
cout << endl << "retrive(getPrev(tail)): 4 - " << a->retrive(a->getPrev(a->getLast()));
cout << endl << "locate(6): adress - " << a->locate(6);
cout << endl << "locate(7): nullptr - " << a->locate(7);
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}