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

Написать программу, которая реализует круговой список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на экран элемент, расположенный в правом нижнем углу массива http://www.cyberforum.ru/cpp-beginners/thread1166651.html
Дан двумерный массив А) вывести на экран элемент, расположенный в правом нижнем углу массива. Б) вывести на экран элемент, расположенный в левом верхнем углу массива.
C++ Передача в функцию через указатели Компилятор говорит, что что-то не так с передачей max и min. Что? #include <stdio.h> #include <iostream> #include <string.h> #define MAX 100 using namespace std; char** creat(char**); int search (char**,int*,int*); //void swap (char , int max, int *min); http://www.cyberforum.ru/cpp-beginners/thread1166641.html
Как реализовать хранение длинных чисел, их сложение и вычитание? C++
Бесконечно длинных чисел.
Объединение пересечение и разность C++
нужно только подправить код для вышеупомянутых задач в конце нужно вывести: объединение: пересечение: разность: и если возможно, дополните комментариями надеюсь на понимание. заранее спасибо #include<iostream>
C++ Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? http://www.cyberforum.ru/cpp-beginners/thread1166602.html
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59; TimerMin = 6; for(int i = TimerSec; i > 0 && TimerMin >= 0; i--) { TimerSec = TimerSec - 1; Sleep(1000);
C++ Сначала вывести все цифры строки, а затем все остальные литеры Помогите пожалуйста с заданием Задан текст, заканчивающийся точкой. Вывести на экран сначала все цифры, входящие в него, а затем все остальные литеры. При написании программы нельзя пользоваться стандартными функциями обработки строк. подробнее

Показать сообщение отдельно
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 401
05.05.2014, 16:56  [ТС]     Написать программу, которая реализует круговой список
Добрый день. Нужно написать программу, которая реализует круговой список. Есть код, но я не знаю, будет ли в нём круговой список. Буду очень благодарен, если вы скажете, будет ли данный код с круговым списком, и если нет, то можно ли его переделать.

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
#include <iostream>
#include <iomanip>
#include <string>
 
using namespace std;
 
struct node
{
    node() : next(NULL) {}
    ~node();
    double middle();
    string name;
    string surname;
    unsigned short int kurs;
    short int *point;
    short int points_count;
    node *next;
};
 
node::~node()
{
    delete []point;
}
 
double node::middle()
{
    double summ = 0;
    for (int i = 0; i < points_count; i++) summ += point[i];
    return summ / points_count;
}
 
node *first = NULL;
node *last = NULL;
 
void recursive_remove(node *student)
{
    if (student->next != NULL) recursive_remove(student->next);
    delete student; 
}
 
int count_nodes()
{
    if (!first) return 0;
    int counter = 1;
    node *student = first;
    while (student->next != NULL)
    {
        counter++;
        student = student->next;
    }
    return counter;
}
 
void add_node()
{
    node *student = new node();
    cout << "Input name student:"; cin >> student->name;
    cout << "Input surname student:"; cin >> student->surname;
    cout << "Input kurs student:"; cin >> student->kurs;
    int pc;
    cout << "Input COUNT points for this student:"; cin >> pc;
    if (pc <= 0) pc = 2;
    student->points_count = pc;
    student->point = new short int[pc];
    for (int i = 0; i < student->points_count; i++)
    {
        cout << "|-Input " << (i+1) << " point:"; cin >> student->point[i];
    }
    if (first == NULL) first = last = student;
    else
    {
        last->next = student;
        last = student;
    }
}
 
node *item(int index)
{
    if (index < 0 || !first) return NULL;
    if (index == 0) return first;
    int max_count = count_nodes();
    if (index >= max_count) return NULL;
    node *student = first;
    for (int i = 1; i <= index; i++) student = student->next;
    return student;
}
 
void remove_node(int index = -1)
{
    if (index < -1 || !first) return;
    int max_count = count_nodes();
    if (index >= max_count) return;
    if (max_count == 1)
    {
        delete first;
        first = last = NULL;
    }
    else if (index == 0)
    {
        node *del = first;
        first = first->next;
        delete del;
    }
    else if (index == -1 || index == max_count-1)
    {
        node *temp = item(index-1);
        delete last;
        last = temp;
        last->next = NULL;
    }
    else
    {
        node *prev_student = item(index-1);
        node *next_student = item(index+1);
        delete item(index);
        prev_student->next = next_student;
    }
    
}
 
int main(int argc, char *argv[])
{
    bool bb = false;
    do
    {
        system("cls");
        cout << "---------------------------------------------------------" << endl;
        cout << setw(4) << "N" << setw(15) << "Name" << setw(15) << "Surname" << setw(6) << "Kurs" << setw(8) << "Points" << endl;
        cout << "---------------------------------------------------------" << endl;
        int max_count = count_nodes();
        if (max_count == 0) cout << "Empty table" << endl;
        else for (int i = 0; i < max_count; i++)
        {
            node *student = item(i);
            cout << setw(4) << (i+1) << setw(15) << student->name << setw(15) << student->surname << setw(6) << student->kurs << "  ";
            for (int j = 0; j < student->points_count; j++) cout << setw(3) << student->point[j];
            cout << endl;
        }
        cout << "------------------------------------------------------------" << endl;
        cout << "[1 - Add student] [2 - Remove student] [3 - Clear all table] [4 - Exit]" << endl << ":";
        int w; cin >> w;
        switch (w)
        {
        case 1:
            add_node();
            break;
        case 2:
            cout << "input remove index (1 - " << max_count << "):";
            int rem_index; cin >> rem_index;
            remove_node(rem_index-1);
            break;
        case 3:
            cout << "Continue?! (1 - Yes, 2 - No):";
            int answer; cin >> answer;
            if (answer == 1 && first)
            {
                recursive_remove(first);
                first = last = NULL;
            }
            break;
        case 4: bb = true;
        }
    }
    while (!bb);
    system("pause");
    if (first) recursive_remove(first);
    return 0;
}
Добавлено через 6 часов 5 минут
Может кто-нибудь подсказать?
 
Текущее время: 01:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru