#include "list.h" List::List() { _size = 0; header->data = 0; header->succ = trailer; header->pred = NULL; trailer->succ = NULL; trailer->pred = header; } List::~List() { clear(); delete trailer; delete header; } void List::clear() { while (0 < _size) remove(0); } Node List::predInsert(Node Old, int New) { Node T = new node; T->data = New; T->succ = Old; T->pred = Old->pred; Old->pred = T; T->pred->succ = T; _size++; return T; } Node List::succInsert(Node Old, int New) { Node T = new node; T->data = New; T->pred = Old; T->succ = Old->succ; Old->succ = T; T->pred->succ = T; _size++; return T; } void List::firstInsert(int New) { Node T = new node; T->data = New; T->pred = header; T->succ = header->succ; header->succ = T; T->succ->pred = T; _size++; } void List::lastInsert(int New) { Node T = new node; T->data = New; T->succ = trailer; T->pred = trailer->pred; trailer->pred = T; T->pred->succ = T; _size++; } Node List::predInsertN(Node Old, Node New) { Node T = new node; T = New; T->succ = Old; T->pred = Old->pred; Old->pred = T; T->pred->succ = T; _size++; return T; } Node List::succInsertN(Node Old, Node New) { Node T = new node; T = New; T->pred = Old; T->succ = Old->succ; Old->succ = T; T->pred->succ = T; _size++; return T; } Node List::firstInsertN(Node New) { Node T = new node; T = New; T->pred = header; T->succ = header->succ; header->succ = T; T->pred->succ = T; _size++; return T; } Node List::lastInsertN(Node New) { Node T = new node; T = New; T->succ = trailer; T->pred = trailer->pred; trailer->pred = T; T->pred->succ = T; _size++; return T; } Node List::find(int i) { Node p = first(); while (0 < i--) { p = p->succ; } return p; } int List::get(int i) { return find(i)->data; } int List::remove(int i) { Node T = find(i); int ans = T->data; removeN(T); return ans; } void List::removeN(Node i) { (i->pred)->succ = i->succ; (i->succ)->pred = i->pred; delete i; _size--; } void List::sort() { int sorted = 0; Node p; for (int i = 0; i <= _size - 1 - sorted; i++) for (int j = i; j <= _size - 1 - sorted; j++) { int max = 0; Node maxN; p = find(j); if (max < p->data) { max = p->data; maxN = p; } maxN->data = p->data; p->data = max; sorted++; } }