Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 12

Из однородного списка в неоднородный

11.06.2015, 10:33. Показов 1565. Ответов 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
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
/*СТРУКТУРА СТУДЕНТ*/
struct Student
{
    char Name[20]; //Имя
    char NameLast[30]; //Фамилия
    char School[30]; //Место учебы
    void Input(Student &student);  //Функция ввода данных в структуру
    Student *Next; //Адрес на следующий элемент
};
class List
{
    Student *Head; //Указатель на начало списка
public:
    List():Head(NULL){}; //Конструктор по умолчанию (Head=NULL)
    ~List();//Деструктор
    void Add(Student &student);
    void Show();
    void Pop();
};
/*ФУНКЦИЯ ЗАПОЛНЕНИЯ ДАННЫХ ПО СТУДЕНТУ*/
void Student::Input(Student &student)
{
    cout<<endl; //Небольшой разрыв при каждом новом вводе
    cout<<"Имя:  "; cin.getline(Name,20); //Ввод имени
    cout<<"Фамилия:  ";cin.getline(NameLast,30); //Ввод  фамилии
    cout<<"Полных лет: ";cin>>Age;  //Ввод возраста
    cin.ignore(); //Игнорируем символ
    cout<<"Где учится: ";cin.getline(School,30); //Ввод места учебы
}
List::~List() //Деструктор класса List
{
        while (Head!=NULL) //Пока по адресу есть хоть что-то
        {
            Student *temp=Head->Next; //Сразу запоминаем указатель на адрес следующего элемента структуры
            delete Head; //Освобождаем память по месту начала списка
            Head=temp; //Меняем адрес начала списка
        }
}
//*ФУНКЦИЯ ДОБАВЛЕНИЯ НОВОЙ СТРУКТУРЫ В СПИСОК*/
 void List::Add(Student &student)
 {
     Student *temp=new Student; //Выделение памяти под новую структуру
     temp->Next=Head; //Указываем, что адрес следующего элемента это начало списка
//Копирование содержимого параметра student в только что созданную переменную
       strcpy(temp->Name,student.Name);
       strcpy(temp->NameLast,student.NameLast);
       temp->Age=student.Age;
       strcpy(temp->School,student.School);
     Head=temp; //Смена адреса начала списка
 }
/*ФУНКЦИЯ КЛАССА LIST ДЛЯ ВЫВОДА СПИСКА НА ЭКРАН*/
 void List::Show()
 {   Student *temp=Head; //Объявляем указатель и изначально он указывает на начало
     while (temp!=NULL) //Пока по адресу на начало хоть что-то есть
     {
     //Выводим все элементы структуры
         cout<<temp->Name<<" "; //Вывод имени
         cout<<temp->NameLast<<", "; //Вывод фамилии
         cout<<temp->Age<<", "; //Вывод возраста
         cout<<temp->School<<endl; //Вывод места учебы
 
         temp=temp->Next; //Указываем на следующий адрес из списка
     }
     cout<<endl;
 }
 /*ФУНКЦИЯ УДАЛЕНИЯ ЭЛЕМЕНТА*/
 void List::Pop()
 {Student *temp=Head->Next; //Сразу запоминаем указатель на адрес следующего элемента структуры
            delete Head; //Освобождаем память по месту начала списка
            Head=temp; //Меняем адрес начала списка
 }
int main ()
{
 setlocale(LC_ALL, "RUS");
  Student student; //Объявили переменную, тип которой Студент
  int N;  //Объявили переменную - число студентов
  List lst; //Объявили переменную типа Список. Она выступает как контейнер данных
    cout<<"N = ";
    cin>>N; //Ввели число студентов
    cin.ignore(); //Игнорируем клавишу Enter
     for (int i=0;i<N;i++)
    {
     student.Input(student); //Передаем в функцию заполнения переменную студент
     lst.Add(student); //Добавляем заполненную структуру в список
    }
    cout<<endl;
   lst.Show(); //Показываем список на экране
   lst.Pop(); //удаляем первый элемент
   lst.Show();
  system("PAUSE");
  return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2015, 10:33
Ответы с готовыми решениями:

Неоднородный поток заявок
Есть генерация трех потоков: potok1 FUNCTION RN1,D2 ;распределение 1 потока 0.5,S1_1/1,out1 potok2 FUNCTION...

Неоднородный диффур 2 порядка с постоянными коэффициентами.
Решить уравнение: y''+3y'-4y=34\cos{x}

Как сделать чтоб рисовался не неоднородный граф, а однородный ? Т.е. чтоб были стрелочки)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...

2
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
11.06.2015, 10:59
Видимо сделать шаблонным.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.06.2015, 11:33
Цитата Сообщение от smartpointer Посмотреть сообщение
Видимо сделать шаблонным.
В таком случае будет N однородных, а не один неоднородный.
Цитата Сообщение от HellSing Посмотреть сообщение
Как переделать его в неоднородный?
Например, использовать в качестве элементов указатель на базовый класс. Тогда можно будет хранить в списке экземпляры любых производных классов.
Или использовать обобщенный указатель void*. Но это не лучшее решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2015, 11:33
Помогаю со студенческими работами здесь

Создание списка, печать списка на экран, добавления элемента в начало списка, конец списка
Построить динамическую структуру типа список . Необходимо реализовать следующие процедуры: 1. создание списка. 2. печать списка на...

Решение однородного уравнения
Здравствуйте, учусь решать ДУ, проверьте пожалуйста... \frac{dy}{dx} = 1 + {\left(\frac{y}{x} \right)}^{2} + \frac{y}{x} y(1) = 0...

Общее решение однородного ДУ
Не сходиться с ответом. Уравнение: xy'-y=\sqrt{{x}^{2}+{y}^{2}} Ответ в задачнике: {x}^{2}={C}^{2}+2Cy Ход решения: y=tx =&gt;...

Привести пример однородного д.у
Привести пример однородного д.у., которое было бы уравнением Бернулли.

Решение однородного уравнения
Здравствуйте, учусь решать ДУ, проверьте пожалуйста... \frac{dy}{dx} = 1 + \frac{y}{x} ; y\left(1 \right) = 0 z = \frac{y}{x} ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru