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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Oksana)
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 23
#1

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

30.03.2012, 15:58. Просмотров 1439. Ответов 1
Метки нет (Все метки)

Создать класс типа - двусвязный список. Функции-члены добавляют элемент к списку, удаляют элемент из списка. Отображают элементы списка от начала и от конца. Найти элемент в списке.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 15:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс типа двусвязный список (C++):

Двусвязный список через абстрактный класс - C++
Здравствуйте, пожалуйста помогите со следующим кодом. Застрял на добавлении элементов в двусвязный список (метод void DList::Push(int data)...

Двусвязный список. Класс с элементом в виде структуры - C++
Вот мой код, обычный список - элементы действительные числа, выводит последовательность х1, х2...х(n) Нужно построить лист2 в котором...

Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" - C++
Что я сделал не правильно? typedef struct ElementsList { struct ElementsList *Prev; struct ElementsList *Next; ...

Переделать двусвязный список в двусвязный кольцевой - C++
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и второй вопрос как обеспечить вставку...

Реализовать класс "Книжный магазин", используя двусвязный список (ошибка с покупкой книги) - C++
Доброго времени суток,мне нужно реализовать класс BookShop используя двусязный список,все методы работают,кроме buyBook,его нужно...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kidasov
77 / 77 / 12
Регистрация: 02.12.2011
Сообщений: 965
Записей в блоге: 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;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 15:02
Привет! Вот еще темы с ответами:

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Составить двусвязный список на основе класса, объекты которого будут формировать этот список - C++
Составить двусвязный список на основе класса, объекты которого будут формировать этот список. В описание класса должны входить данные для...

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...

Контейнерный класс типа "Список" без использования STL - C++
Есть базовый класс Component и три производных от него класса: Chipset, SoundCard и VideoAdapter. Нужно описать контейнерный класс Computer...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru