Добавил:
Yanus
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab5
.txt#include <stdio.h>
class List {
class Node {
public:
int d; // Data
Node *next; //Next node
Node *prev; //Prev node
Node(int dat = 0) {
d = dat; next = 0; prev = 0;
}
};
public:
Node *pbeg, *pend;
List(){pbeg = 0; pend = 0;}
~List();
Node * first(int d);
void add(int d);
void print_list();
void print_list_back();
};
/*void List::add(int d) {
Node *pv = new Node(d);
if (pbeg == 0) pbeg = pend = pv;
else {
pv->prev = pend;
pend->next = pv;
pend = pv;
}
}*/
void List::add(Node **pbeg, Node **pend, int d) {
Node *pv = new Node;
pv->d = d;
Node * pt = *pbeg;
while (pt) {
if (d < pt->d) {
pv->next = pt;
if (pt == *pbeg) {
pv->prev = 0;
*pbeg = pv;
}
else {
(pt->prev)->next = pv;
pv->prev = pt->prev;
}
pt->prev = pv;
return;
}
pt = pt->next;
}
pv->next = 0;
pv->prev = *pend;
(*pend)->next = pv;
*pend = pv;
}
void List::print_list() {
Node *pv = pbeg;
printf("List:\n\n");
while (pv) {
printf("%d\t", pv->d);
pv = pv->next;
}
}
void List::print_list_back() {
Node *pv = pend;
printf("List back:\n\n");
while (pv) {
printf("%d\t", pv->d);
pv = pv->prev;
}
}
List::~List() {
if (pbeg != 0) {
Node *pv = pbeg;
while (pv) {
pv = pv->next;
delete pbeg;
pbeg = pv;
}
}
}
int main() {
List L;
for (int i = 1; i<50; i += 5) L.add(i);
for (int j = 1; j<20; j += 2) L.add(j);
L.print_list();
printf("---------------------------------------------------------------------------\n");
L.print_list_back();
getchar();
}