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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевести с DELPHI в С++ http://www.cyberforum.ru/cpp-beginners/thread318359.html
Кто-нибудь сможет помочь переписать код с delphi на с++? И вообще возможно ли это?
C++ Нормальное Распределение чисел есть программа. вычисляет нормально распределенные два числа методом Бокса — Мюллера, не могу сделать что выводила случайную последовательность а не два числа. помогите плиз! #include <math.h> typedef unsigned long long u64; typedef long long s64; typedef double d64; typedef struct { u64 rec_count; u64 start; http://www.cyberforum.ru/cpp-beginners/thread318357.html
C++ Как изучать С++ ?
Уважаемые участники форума, я тут на досуге - невзначай решил научиться азам С++. Нашел кучу учебников сижу типа читаю. Столкнулся с проблемой - масса ненужной информации и нет систематизации материала. Обычно начинают вешать всякую лапшу на уши о том как вначале ничего не было. потом создали компьютер, юзера, админа, Windows итд итп, а потом бац и сложный материал. Может ли мне кто...
C++ Нахождение кратчайшего пути в неорентированном графе от заданой вершины к заданной
Добрый день. Вот решаю задачку о кратчайщем расстояние между двумя верщинами в неорентированном связном графе без циклов. Заданны такие параметры. (Помещаю их в файл text2.txt) 6 -- количество вершин N 1 2 7 -- Начало, конец, длина 2 3 3 2 4 6 4 5 3 5 6 1 4 -- количество пар вершин M для которых нужно узнать короткое растояние
C++ Массив http://www.cyberforum.ru/cpp-beginners/thread318283.html
Помогите разобраться. Только начал читать про указатели и решил написать простенькую программку :) Она считает кол-во прописных букв и записывает эти буквы в массив. Насчет счетчика всё ясно, но вот как записывать буквы в массив не разобрался. GNU nano 2.2.6 Файл: p209E12.cpp #include <cctype> #include <iostream> using namespace std; main() {
C++ исправить код программы #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<iomanip.h> float f( float, float, float, float); float pr_chet( float *mas, int k); float sum_f( float *mas,int k); void Vivod_mas(float a,int k); подробнее

Показать сообщение отдельно
Anna Bridman
0 / 0 / 0
Регистрация: 12.06.2011
Сообщений: 7
12.06.2011, 17:12     Шаблон класса двусвязный список
Для решения задачи описать и использовать шаблон класса "двусвязный список".
Необходимо составить программу которая содержит динамическую информацию о наличии автобусов в автобусном парке. сведения о каждом автобусе содержат: 1)номер; 2)фамилию водителя; 3)номер маршрута; 4)признак того, где находится автобус - на маршруте или в парке. Программа должна обеспечивать:
1) начальное формирование данных о всех автобусах в виде списка;
2) при выезде каждого автобуса из парка вводится номер автобуса, и программа устанавливает значение признака "автобус на маршруте";
3) при въезде каждого автобуса в парк вводится номер автобуса, и программа устанавливает значение признака "автобус в парке";
4) по запросу выдаются сведения об автобусах, находящихся в парке, или об автобусах, находящихся на маршруте.

Проблема как раз в составлении шаблона. Задание главным образом состоит в написании шаблона класса "двусвязный список" без использования встроенных типа <list> или <vector>. Ниже то, что я успела сделать. Может кто потратит немного времени на набросок или замечпния по коду, хотя бы подсказать в каком направлении мне двигаться. Спасибо


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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include "stdafx.h"
#include <string>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
class spisok
{
    struct element              
    {
        string number;          //Номер автобуса
        string driver;          //Водитель
        string route;           //Маршрут
        bool deport;            //Признак того, где находится автобус (в автопарке или на маршруте)     
        element *next;          //Указатель на следующий элемент списка
        element *prev;          //Указатель на предыдущий элемент списка
        element *head;          //Указатель на первый элемент списка
        element *tail;          //Указатель на последний элемент списка
 
                                
        element (): number(0), driver(0), route(0), next(0),prev (0), head (NULL), tail (NULL)
        {}
    }
 
    *bus;
 
    public:
        string get_number()         { return bus->number;           }
        string get_route()          { return bus->route;            }
        string get_driver()         { return bus->driver;           }
        bool get_deport()           { return bus->deport;           }
 
        element &operator [] (int index)                        //Перегрузка оператора индексирования
        {
            return bus[index];
        }
 
        element operator = (element *current)                   //Перегрузка оператора присваивания
        {
            return element( bus->number = current->number,
                            bus->driver = current->driver,
                            bus->route  = current->route,
                            bus->deport = current->deport,
                            bus->next   = current->next,
                            bus->prev   = current->prev);
        }
        spisok() : bus(0) {}//конструктор по умолчанию класса spisok
 
        element *new_bus(string num, string dr, string r)
        {
            bus = new element();
            bus->number = num;
            bus->driver = dr;
            bus->route = r;
            bus->prev = bus->tail;
            bus->next = NULL;
            if (bus->tail != NULL)
                bus->tail->next = bus;
            if(bus->head == NULL)
                bus->head = bus;
            bus->tail = bus;
            return bus;
        }
 
        void print()                //ф-ция печати
        {
            element *E = bus;
 
            while(E
            {
                cout<<E->number
                    <<"\t"<<E->driver
                    <<"\t"<<E->route;
                E = E->next;
            }
            cout<<"\n";
        }
 
        void search(string par_search)//ф-ция поиска. содержит par_search, к-ый определяет что искать
        {
            element *E = bus;
            if (bus == 0)//если список пуст, то ничего не ищется, выход из программы
                return;
 
            while(E)//сам цикл поиска
            {
                if (par_search == E->number)//если par_search, к-ый мы ввели, совпадает с номером автобуса в списке
                {
                    cout<<"\n"<<bus->number //то распечатывает
                        <<"\t"<<bus->driver
                        <<"\t"<<bus->route
                        <<"\n";
                    break;
                }
                E = E->next;//проверяет следующий элемент списка
            }
        }
 
        void in_deport() {bus->deport = false;}
        void on_route() {bus->deport = true;}
 
        void delete_spisok()//
        {
            if(bus == 0)//если список пуст, то ничего не удаляется, выход из программы
                return;
            element *E = bus;//в противном случае идет удаление
            bus = bus->next;
            delete E;
        }
 
        ~spisok()//деструктор 
        {
            while(bus)
                delete_spisok();
        }
};
 
 
void main()
{
    spisok bus[100];
    string number;
    string route;
    string driver;
    string number_build;
    string index;
    int i,q = 0;
    int size = 0;
    string par_search;
    int num;
    
    int CV = 0;
    while (CV != 5)
    {
        cout << endl << "Menu: \n"
        << "1. New bus \n"
        << "2. Show spisok \n"
        << "3. Delete bus \n"
        << "4. Search bus\n"
        << "5. Exit \n"
        <<"Input number menu:  ";
 
        cin >> CV;
        switch(CV)
        {
                case 1: 
                    {
                        cout<<" Name number: "; cin>>number;
                        cout<<" driver: ";      cin>>driver;
                        cout<<" route: ";       cin>>route;
 
                        bus[q].new_bus(number, driver, route);
                        q++;                                                        
                        size = q;                                                   
                    }  break;
 
                case 2:
                    { 
                        for (i = 0; i < size; i++)
                        bus[i].print();//вызывается ф-ция печати
                    }  break;
 
                case 3:
                    {
                        cout<<"\nVvedite nomer:";//вводится номер записи которую надо удалить
                        cin>>i;
                            bus[i].delete_spisok();//вызывается ф-ция удаления записи
                    }  break;
 
                case 4: 
                    {
                        cout<<"\nEnter number bus: ";
                        cin>>par_search;//вводится параметр поиска, т.е. номер автобуса
                        for (int i = 0; i < size; i++)
                        bus[i].search(par_search);//вызывается ф-ция поиска
                    }  break;
 
                case 5:  break;
 
            default: cout << endl << "Enter right number!\n"; break;
        }
 
    _getch();
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru