|
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
|
|
| 14.03.2020, 02:44 | |
|
Ответы с готовыми решениями:
1
Добавление элемента в список Добавление элемента в список Добавление элемента в двусвязный список |
|
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
|
|
| 14.03.2020, 08:47 | |
|
CyberEnot, Для начала отключите void sort(), причешите код, потом разбирайтесь с остальным
0
|
|
| 14.03.2020, 08:47 | |
|
Помогаю со студенческими работами здесь
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. Пошагово создадим проект для загрузки изображения. . .
|