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

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

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

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

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

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

Двусвязный список через абстрактный класс - 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++
Доброго времени суток,мне нужно реализовать класс BookShop используя двусязный список,все методы работают,кроме buyBook,его нужно...

Создать класс "Список объектов любого типа" - C++
Создайте класс, который способен запоминать список объектов не заданного типа класса (для любого класса). Помогите кто знает (Нужен код,...

Создать класс "Список объектов любого типа" - C++
Создайте класс, который способен запоминать список объектов не заданного типа класса (для любого класса). #include <iostream> ...

Линейный двусвязный список - C++
Задали задачу, реализовать линейный двусвязный список, и функцию к нему - удаление узла. Читал литературу, правда в спешке, искал по форуму...

Двусвязный кольцевой список - C++
подскажите пожалуйста как будит выглядеть Двусвязный кольцевой список? #include "stdafx.h" #include <cstdlib> #include...

Двусвязный список (профан) - C++
Всем снова добрый вечер! Итак суть такова: есть двусвязный список непонятной информации(но это строки точно), смысл в том,что его создают...

двусвязный циклический список - C++
помогите исправить ошибки впрограмме не знаю че делать(компилятор dev-c++) заранее спасибо #include <stdlib.h> #include <stdio.h> ...

Циклический двусвязный список - C++
Здравствуйте, задали написать програмку: Организовать заданную структуру данных. Определить структуру элемента и написать подпрограммы...

Циклический двусвязный список - C++
Помогите написать функцию удаления всех элементов списка с заданным значением. Не могу додуматься как сделать. struct Node { int...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
Ответ Создать тему
Опции темы

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