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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать двусвязный список в двусвязный кольцевой http://www.cyberforum.ru/cpp-beginners/thread534605.html
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и второй вопрос как обеспечить вставку элемента куда нужно, так как входной список есть отсортирован.. list.h #include <iostream> using namespace std; template <class T>
C++ Сравнение строки в структуре с переменной типа char Есть некая функция Х которая возвращает кол-во строк структуры Poezda a, строка a.StNazn в которой равна введеному с клавиатуры c и создает структуру Poezda b в которую записывает те строки в а которые совпали с "с". я наверное плхо объяснила, но всё же. проблемма в том что строка структуры и "с" не хотят стравниваться. как бы так их сравнить чтобы всёбыло ок?)) int X(Poezda a,Poezda b,int... http://www.cyberforum.ru/cpp-beginners/thread534598.html
C++ Вставить нуль перед k-тым элементом последовательности
Прошу помочь с задачей: Дана последовательность целых чисел. Перед каждым k-тым элементом по счету вставить 0.
Угол между прямой и осью ОХ C++
Доброго времени суток всем. Сдаю курсовую по OpenGL, и, собственно, на опеделенной стадии возникла следующая проблема: нужно по введенным параметрам прямой a, b и с определить в двухмерном пространстве угол между этой прямой и осью ОХ. Вопрос в большей мере математический, но преподаватель сказал "обратите особое внимание на ф-ю atan2". почитав в мсдн о ней, я не совсем понял, какое отношение...
C++ Итераторы и стеки http://www.cyberforum.ru/cpp-beginners/thread534583.html
Вот условие: Задано целое число. Записать все десятичные цифры этого числа в стек. Переписать элементы в новый стек удалив все цифры 0. Вот исходник (сори за коменты): //--------------------------------------------------------------------------- #pragma hdrstop #include <stdlib.h>
C++ Онлайн среды разработки Здравствуйте. Я постоянно бываю не за своим компом, но иногда ребуется покодить, есть ли онлайн среды разработок С++, С# и тд. И подскажите какие лучше, какие русские и простенькие. Заранее спасибо подробнее

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

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;
}
 
Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru