4 / 4 / 1
Регистрация: 12.09.2013
Сообщений: 134
|
||||||
1 | ||||||
Сформировать односвязный кольцевой линейный список по файлу целых чисел09.02.2014, 21:00. Показов 4725. Ответов 4
Метки нет Все метки)
(
Помогите пожалуйста,разобраться..для меня тема новая,не очень понимаю как написать код к заданию:
Сформировать односвязный кольцевой линейный список по файлу целых чисел. Обработать список, удаляя в нем последовательно n-й элемент, пока не останется один элемент (после удаления отсчет начинается со следующего элемента), n ввести с клавиатуры. Информацию всех удаляемых узлов выводить на экран. Если удаляется узел – голова списка, сделать головой следующий за ним узел. Вот безрезультатные попытки разобраться с кодом,особенно интересует удаление:
0
|
|
09.02.2014, 21:00 | |
Ответы с готовыми решениями:
4
Разработать алгоритм и программу решения задачи, в которой сформировать кольцевой односвязный список. Создать однонаправленный кольцевой список целых чисел Кольцевой список на основе массива целых чисел x[1] ... x[n] |
10.02.2014, 02:11 | 2 |
Методы работы со списком, вроде бы, правильные и должны работать, хотя я бы посоветовал поместить их всех (включая удаление и прочее) в отдельный класс, который будет хранить указатель на последний элемент, на первый и вообще все необходимое.
А вот с методами работающими с файлом проблема. Вы определитесь какого типа у Вас x. Если int, то где именно в множестве целых чисел Вы видели "*", а если char*, то нужно определиться с форматом файла. В текстовый файл можно писать и char*, а вот для бинарного придётся, сначала, преобразовать char* в int при помощи метода atoi или sscanf. PS: доведите класс списка до ума (пока там всё правильно, просто бардак немного). И определитесь с форматом файла и типом переменной x. И всё заработает. Добавлено через 4 минуты Удаление делается просто. нужен указатель на элемент перед удаляемым. т.е. проходитесь от первого в стиле p = p->next, пока p->next не станет равно удаляемому элементу. И тогда просто пишите p->next=p->next->next. и элемент будет пропущен в списке. (только не забудьте разобраться с памятью выделенной под удалённый элемент)
0
|
4 / 4 / 1
Регистрация: 12.09.2013
Сообщений: 134
|
|
10.02.2014, 14:44 [ТС] | 3 |
НеСказочник, дело в том,что это мне нужно сделать именно без класса..А про х спасибо,изменила. Меня больше интересует часть где про удаление n-ого числа. Не могли бы вы подсказать,как это можно сделать?
0
|
![]() ![]() |
||||||
10.02.2014, 15:25 | 4 | |||||
Вам нужно хранить два указателя - на текущий и на предыдущий элемент. Например, имеем метод принимающий n - порядковый номер удаляемого элемента:
Кликните здесь для просмотра всего текста
1
|
4 / 4 / 1
Регистрация: 12.09.2013
Сообщений: 134
|
||||||
11.02.2014, 14:43 [ТС] | 5 | |||||
Вот у меня вышло такое безобразие,подскажите пожалуйста,что не так
0
|
11.02.2014, 14:43 | |
11.02.2014, 14:43 | |
Помогаю со студенческими работами здесь
5
Односвязный список из последовательности целых чисел Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым элементом со значен Односвязный кольцевой список Кольцевой односвязный список Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |