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

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

14.03.2020, 02:44. Показов 547. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru