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

Класс типа двусвязный список - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Oksana)
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 23
30.03.2012, 15:58     Класс типа двусвязный список #1
Создать класс типа - двусвязный список. Функции-члены добавляют элемент к списку, удаляют элемент из списка. Отображают элементы списка от начала и от конца. Найти элемент в списке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 15:58     Класс типа двусвязный список
Посмотрите здесь:

C++ С++, контейнерный класс типа список без использования STL
C++ Двусвязный список
Переделать двусвязный список в двусвязный кольцевой C++
Двусвязный список (в конец двусвязного списка добавить другой список) C++
C++ Двусвязный список
Двусвязный список C++
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
C++ Двусвязный список. Класс с элементом в виде структуры

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kidasov
76 / 76 / 12
Регистрация: 02.12.2011
Сообщений: 966
Записей в блоге: 3
31.03.2012, 15:02     Класс типа двусвязный список #2
Вот простейшая реализация двусвязного списка, вам остается только реализовать метод нахождения элемента в списке.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
using namespace std;
 
struct Node {
    int number; //данные
    Node *next; //указатель на следующий узел
    Node *prev; //указатель на предыдущий
};
 
class doubleList {
    Node *head;
    Node *tail;
public:
    doubleList();
    void addFirst(int number);
    void addLast(int number);
    void delTail();
    void delHead();
    void sortingList();
    void swap(int &a, int &b);
    void showList() const;
};
 
doubleList :: doubleList() {
    head = tail = NULL;
}
 
//Добавление узла в начало
void doubleList :: addFirst(int number) {
    Node *buf  = new Node;
    buf -> number = number;
    if (!head) {
        buf -> next = tail;
        tail = buf;
    }
    else {
        buf -> next = head;
        head -> prev = buf;
    }
    head = buf;
    head -> prev = NULL;
 
}
 
//Добавление узла в начало
void doubleList :: addLast(int number) {
    Node *buf = new Node;
    buf -> number = number;
    if (!head) {
        buf -> next = tail;
        head = buf;
        buf -> prev = NULL;
    }
    else {
        buf -> next = tail -> next;
        buf -> prev = tail;
        tail -> next = buf;
    }
    tail = buf;
}
 
//Пройти по списку и вывести все элементы
void doubleList :: showList() const {
    if (head) {
        Node *buf = head;
        while (buf) {
            cout << buf ->number << " ";
            buf = buf -> next;
        }
        cout << endl;
    }
    else cout << "List is empty " << endl;
}
 
//Удаление головы
void doubleList :: delHead() {
    if (head) {
        Node *buf = head;
        head = head -> next;
        head -> prev = NULL;
        delete buf;
    }
    else cout << "List is empty" << endl;
}
 
//Удаление хвоста
void doubleList :: delTail() {
    if (tail) {
        Node *buf = tail;
        tail = tail -> prev;
        tail -> next = NULL;
        delete buf;
    }
    else cout << "List is empty" << endl;
}
 
//Обмен данных списка
void doubleList :: swap(int &a, int &b) {
    int buf = a;
    a = b;
    b = buf;
}
 
//Сортировка
void doubleList :: sortingList() {
    Node *buf = head;
    for (Node *i = buf; i; i = i -> next) {
        for (Node *j = i -> next; j; j = j -> next) {
            if (i -> number < j -> number) {
                swap(i -> number, j -> number);
            }
        }
    }
 
}
 
 
int main()
{
    doubleList ob;
    int a_i;
    cout << "Enter elements" << endl;
    while (1) {
        cin >> a_i;
        if (a_i) {
            ob.addFirst(a_i);
        }
        else break;
    }
    ob.sortingList();
    ob.showList();
    cout << "Hello World!" << endl;
    return 0;
}
Yandex
Объявления
31.03.2012, 15:02     Класс типа двусвязный список
Ответ Создать тему
Опции темы

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