Форум программистов, компьютерный форум CyberForum.ru

Спроектировать класс двунаправленный список со следующим интерфейсом - C++

Восстановить пароль Регистрация
 
Sasha_Sasha
Сообщений: n/a
24.12.2013, 08:33     Спроектировать класс двунаправленный список со следующим интерфейсом #1
1. Спроектировать класс двунаправленный список со следующим интерфейсом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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:
    //служебные функции  
};
Элементами списка являются экземпляры класса
C++
1
2
3
4
5
6
7
8
9
10
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 в начало списка

Пример использования
C++
1
2
3
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. Файла тест-драйва, демонстрирующего работоспособность функций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 08:33     Спроектировать класс двунаправленный список со следующим интерфейсом
Посмотрите здесь:

Двунаправленный список C++
C++ Двунаправленный список...
Спроектировать и реализовать класс BigInt C++
C++ Двунаправленный список!
C++ Двунаправленный список
C++ Класс: двунаправленный список
Спроектировать и реализовать класс Matrix C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru