Я должен реализовать Циклический список с двойной связью с узлом заголовка в C ++.
Мой профессор дал мне этот алгоритм, но я не могу понять, как его использовать.
Где и как я должен использовать предшествовать, следовать и выходить?
Внутри precede
есть буква «P», которую я не понимаю, откуда она взялась, То же самое касается r в методе follow
и p и r в методе out
, но я подумал, что это может быть просто new E2*
, поэтому я создал это
class E2 {
public:
E2* prev;
E2* next;
int key;
E2() {
prev = this;
next = this;
};
};
void precede(E2* q, E2* r) {
//insert (*q) before (*r)
E2* p = new E2();
p = r->prev;
q->prev = p;
q->next = r;
p->next = r->prev = q;
}
void follow(E2* p, E2* q) {
E2* r = new E2();
r = p->next;
q->prev = p;
q->next = r;
p->next = r->prev = q;
}
void out(E2* q) {
E2* r = new E2();
E2* p = new E2();
p = q->prev;
r = q->next;
p->next = r;
r->prev = p;
q->prev = q->next = this;
}
В методе out «это» дает мне ошибку, которая говорит: 'this' may only be used inside a nonstatic member function