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

Добавление элемента в список

14.03.2020, 02:44. Показов 565. Ответов 1

Студворк — интернет-сервис помощи студентам
Создать двусвязный линейный список, содержащую информацию о горожанине фамилия И.О., дата рождения, адрес. Посчитать возраст.
В программе должны быть реализованные функции:
- Добавление элемента в список.
- Изменение элемента в списке (по выбранному параметру).
- Взаимообмен узлов списка осуществляется путем переустановки указателей.
- Удаление элемента в списке (по выбранному параметру).
-Вывод элемента списка на экран.
- Вывод всего списка на экран.
- Подсчет элементов в списке.

Добавлено через 2 часа 13 минут
Нашла пример, по которому и делала данное задание. Половина пунктов выполнена. Но ошибка появляется тогда, когда я хочу добавить следующий элемент - программа останавливается.
Кликните здесь для просмотра всего текста
#define _CRT_SEcurrentE_NO_WARNINGS

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <Windows.h>
using namespace std;
#define QUEUE struct gorod

QUEUE
{
int num, year;
string fio,adres;

QUEUE* next;
QUEUE* prev;
};

QUEUE* head = NULL;
QUEUE* last = NULL;
QUEUE* current = NULL;
QUEUE* temp = NULL;
QUEUE* newList = NULL;

void add_name(int num, int year, string fio, string adres)
{
if (head != NULL)
{
newList = new QUEUE;
newList->num = num;
newList->year = year;
newList->fio = fio;
newList->adres = adres;
newList->next = NULL;
newList->prev = current;
current->next = newList;
last = newList;
current = newList;
}
else
{
newList = new QUEUE;
newList->num = num;
newList->year = year;
newList->fio = fio;
newList->adres = adres;

head = newList;
newList->next = NULL;
newList->prev = NULL;
current = newList;
last = head;
}
}
void delete_unit(int num)
{
newList = head;
while (newList) {
if (newList->num == num)
{
if (newList == head) {
head = head->next;
if (head)
head->prev = NULL;
else
last = NULL;
if (current == newList)
current = head;
delete newList;
cout << "Complete!" << endl;
_getch();
break;
}
if (newList == last) {
last = last->prev;
if (last)
last->next = NULL;
if (current == newList)
current = last;
delete newList;
cout << "Complete!" << endl;
_getch();
break;
}
else {
cout << "Not find!" << endl;
_getch;
}
newList->prev->next = newList->next;
newList->next->prev = newList->prev;
current = newList->prev;
delete newList;
break;
}
newList = newList->next;
}
}
void sort()
{
gorod* cur = head;
while (cur->next)
{
if ((cur->num) > (cur->next->num)) {
cur = cur->next;
sort();
}
}
}
void show_list(gorod* head)
{

QUEUE* curr = nullptr, * prev = nullptr;
gorod* p = head;
while (p)
{
cout << endl;
cout << "----------------------------------" << endl;

cout << "Год рождения: " << p->year << endl;
cout << "Адрес: " << p->adres << endl;
cout << "ФИО: " << p->fio << endl;
p = p->next;
}
}
void show_list_n(int num)
{
gorod* info = head;
while (info)
{
if (info->num == num)
{
cout << "----------------------------------" << endl;
cout << "----------------------------------" << endl;

cout << "Год рождения: " << info->year << endl;
cout << "Адрес: " << info->adres << endl;
cout << "ФИО: " << info->fio << endl;
}
info = info->next;
}
cout << "\n";
}

int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int enter_num, num, key, n = 0, year, year_fin;
string fio, adres;


while (true)
{
system("cls");
cout << "1. Ввести данные\n";
cout << "2. Удаление элемента по номеру\n";
cout << "3. Вывод всего списка\n";
cout << "4. Вывод по заданному номеру\n";
cout << "5. Возраст\n";
cout << "6. Выход\n";
key = _getch();
switch (key)
{
case '1':
{
system("cls");
cout << "Введите номер горожанина: ";
cin >> enter_num;
cout << "Введите ФИО: ";
cin >> fio;
cout << "Введите год Рождения: ";
cin >> year;
cout << "Введите адрес: ";
cin >> adres;
add_name(enter_num,year,fio,adres);
n++;
if (n == 0) {
}
else if (n > 0) {
sort();
}
break;
}
case '2':
{
system("cls");
cout << "Введите номер для удаления: ";
cin >> enter_num;
delete_unit(enter_num);
if (n <= 0)
n = 0;
else
n--;

break;
}
case '3':
{
system("cls");
cout << "------ Заявки ------" << endl;
show_list(head);
_getch();
break;
}
case '4':
{
cout << "Введите номер для поиска: ";
cin >> num;
system("cls");
cout << "------ Заявки по номеру " << num << " -----" << endl;
show_list_n(num);
_getch();
break;
}
case '5':
{
cout << "Введите номер для поиска: ";
cin >> num;
system("cls");
cout << "Возраст горожанина под номером " << num << " = "<< 2020-year << endl;
cin >> year_fin;
}
case '6':
{
exit(0);
break;
}
default:
{
cout << "Error\n";
_getch();
break;
}
if (key == 0) break;
}
}
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2020, 02:44
Ответы с готовыми решениями:

Добавление элемента в список
Spis2* put(Spis2 *current, int info) { Spis2 *temp = new Spis2; temp-&gt;info = info; temp-&gt;next = current; temp-&gt;prev = NULL; ...

Добавление элемента в список
У меня есть список, пока в нем функции вывода данных print, добавление add и вывод первого Begin() и последнего End() элементов. struct...

Добавление элемента в двусвязный список
двусвязный список, как сделать добавление элемента? пока вот что сочинил. /*Список*/ struct list_item_t { list_item_t...

1
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
14.03.2020, 08:47
CyberEnot, Для начала отключите void sort(), причешите код, потом разбирайтесь с остальным
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2020, 08:47
Помогаю со студенческими работами здесь

Не работает добавление элемента в список
#include &lt;iostream&gt; using namespace std; class mas { public: int data; mas* next; mas* prev; }; class List

Добавление элемента в список по номеру
Помогите, пожалуйста, разобраться, как определить номера элементов односвязного кольцевого списка. Это мне надо, чтобы сделать функцию...

Добавление в список нового элемента
Всем доброе время суток. Мне нужна помощь, есть задание: нужно добавить в список новый элемент, после элемента, совпадающего с ключем x,...

Добавление элемента в односвязный список
Здравствуйте, делаю односвязный список, возник такой вопрос в следующем методе: void Add(int a) { element *temp = new...

Добавление элемента в двусвязный список
Здравствуйте, нужно вставить элемент в двусвязный список Написала код, но он не работает. tek=first; while(tek) {i++; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru