Простая лабораторная работа по ООП
class DoublyLinkedList{
ListNode *head;
public:
DoublyLinkedList(void);//default constructor
~DoublyLinkedList(void);//destructor
//member functions
int size(); //Returns the number of elements in the list.
bool empty(); //Returns true if empty, false otherwise.
void clear(); //Removes all elements from the list.
void push_back(const ListNode &);// Adds node to the end of the list.
void push_front(const ListNode &);// Adds node to the front of the list.
void pop_front();// Removes the first element of the list.
void pop_back();// Removes the last element of the list.
void insert_ord( const ListNode &);//Inserts node preserving list ordering
void sort();//Sorts list in nondescending order
bool insert_after(char *dat, const ListNode &nd);// Inserts nd after the
//the node with dat. Returns
//true on success
void operator=(const DoublyLinkedList &);// Overloaded of the assignment
//operator
void merge(DoublyLinkedList &);//Removes the elements from the argument
//list, inserts them into the target list, //and orders the new, combined set of //elements in nondescending order
void erase(char *dat);// Removes all nodes with dat
void unique();//Removes adjacent duplicate elements or adjacent elements
void assign(DoublyLinkedList &dl, int first, int last);//deletes elements
//from argument list between first and last //positions and adds them to the end of
//target list
void splice(int where, const DoublyLinkedList &dl);//inserts elements of
//argument list in target list starting from
//where position
void splice(int where, const DoublyLinkedList &dl, int first, int
last);// inserts elements of argument list from first to
//last positions in target list starting from
//where position
void print();//prints list
void print_bkw();//prints list backward
private:
//служебные функции
};
Элементами списка являются экземпляры класса
class ListNode{
char *data;
ListNode *prev;
ListNode *next;
public:
friend class DoublyLinkedList;
ListNode();//default constructor
ListNode(char *_data );
~ListNode(void);
};
Mетоды класса DoublyLinkedList .
size() – возвращает число элементов списка
empty() - возвращает true если список пуст и false – в противном случае
clear() – удаляет все элементы списка
push_front(const ListNode &nd) – вставляет копию nd в начало списка
Пример использования
DoublyLinkedList *ls = new DoublyLinkedList;
ListNode nd1("brian");
ls->push_front(nd1);
push_back(const ListNode &nd) – вставляет копию nd в конец списка
pop_front() – удаляет первый элемент списка
pop_back()– удаляет последний элемент списка
insert_ord( const ListNode &nd) – вставляет копию nd в список таким образом,
чтобы не нарушалась его упорядоченность
sort() – сортирует список в порядке неубывания
insert_after(char *dat, const ListNode &nd) – вставляет копию nd в список после
узла, который содержит dat. Возвращает true в случае успеха
operator=(const DoublyLinkedList &) – перегруженый оператор присваивания
merge(DoublyLinkedList &lst) – удаляет элементы lst, втавляет их в список и упорядочивает полученный список в порядке неубывания
erase(char *dat)- удаляет все узлы с dat
unique() – удаляет все смежные повторяющиеся узлы (список предварительно д.б.
отсортирован)
assign(DoublyLinkedList &dl, int first, int last) – удаляет элементы от позиции
first до позиции last из списка dl и добавляет их в конец текущего.
void splice(int where, const DoublyLinkedList &dl) – вставляет элементы списка dl в текущий, начиная с позиции where.
void splice(int where, const DoublyLinkedList &dl, int first, int last) - вставляет элементы списка dl, от позиции first до last, в текущий, начиная с позиции where.
Примечание. Отсчет позиций начинается с нуля.
print() – печатает список от головы к хвосту
print_bkw()– печатает список от хвоста к голове
Результаты работы оформить в вде проекта С++-программы, включающей:
1. Header-файлы ListNode.h и DoublyLinkedList.h.
2. Файлы определениий ListNode.срр и DoublyLinkedList.срр.
3. Файла тест-драйва, демонстрирующего работоспособность функций.

С Уважением ,
Евгений Патяка
Зарегистрируйтесь или войдите на сайт под своим именем.