4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
1

На основе заданных прототипов реализовать функции-члены для пользовательского класса "Односвязный список"

28.02.2016, 03:24. Показов 799. Ответов 1
Метки нет (Все метки)

Извиняюсь,забыла принт опреедлить
Преподаватель дал прототипы функций ,которые надо определить для односвязного списка,но,начав разбираться в нем,уже погрязла в вопросах.и вот вопросы ,которые накопились
1)как инициализировать например список из 3 элементов(кусок куда если можно)(как создается узел я не понимаю)
2)зачем в моем коде деструктор по умолчанию.препод просто написал,Ничего особо не объясняя
3)напишите пожалуйста пример хотя бы одной функции вместе с инициа нескольких узлов
4)и если есть у кого понятная книга по этой теме-ткните пожалуйста.
Благодарю
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
#include <iostream>
using namespace std;
struct Single_node
{
    int val; // размерность списка
    Single_node *next; //указатель на след
    Single_node(int); //конструктор.он инициал размерность?
    Single_node(){}//незнаю зачем тут пустой конструктор
};
class Single_list
{
private:
    Single_node *head;//указатель на начало
    Single_node *tail;//указатель на конец
public:
    Single_list();// 2 пустых конструктора
    Single_list();// незнаю зачем они
    Single_list(int);//и этот тоже
    bool is_empty(); //пустой или нет
    void add_front(int);//добавить вначало
    int remove_front();//удалить сначала 
    bool find(); //есть или нету
    int get_nth(int); // получить н-тый
    int size();//размер
};
int main()
{
    Single_list list;
    for (int i = 0; i < 5; i++)
    {
        list add_front(i);
        print_slist(list);
    }
    while (!(list is_empty))
    {
        print_slist(list);
        list.remove_front();
    }
}
//должно выводить
//0
//1 0
//2 1 0
//3 2 1 0
//4 3 2 1 0
//4 3 2 1 0
//3 2 1 0
//2 1 0
//1 0
//0
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2016, 03:24
Ответы с готовыми решениями:

Реализовать указанные функции-члены для пользовательского класса "Кольцевой двусвязный список"
Сообственно сабж. У списка два закрытых поля: tail-это узел следующий за &quot;последним&quot;(условно,ибо...

Обработка пользовательского класса "Односвязный линейный список"
Доброго времени суток. Хочу написать программу для обработки односвязного линейного списка (ОЛС)...

Реализовать пользовательский класс "Список" и функции-члены для создания, просмотра и удаления списка
Добрый день. Имеются несколько функций для работы с однонаправленным списком. Не получается...

Реализовать удаление элемента из пользовательского класса "Двунаправленный список"
Программа для работы с двунаправленным списком. Пользователь вводит список с клавиатуры, программа...

1
2644 / 2220 / 239
Регистрация: 03.07.2012
Сообщений: 8,064
Записей в блоге: 1
28.02.2016, 12:01 2
Элемент списка - объект, хранящий данные (целое число val и ссылку на следующий). Поэтому нужен конструктор. Конструктор по-умолчанию пусть присваивает val значение ноль. val хранит те данные, ради которых создан список и это никак ни его размерность, поскольку val-поле узла (элемента списка). Если список - дом, а узел - квартира, то val-номер квартиры, например.
Два пустых конструктора не бывает (что-то не так переписали). С find(), кстати, тоже напутали - не может быть функции "найти" без указания, что же ищется
Конструктор с одним параметром создает список с одним элементом (который хранит это значение).
Список с 3 элементами можно создать:
а) пустой, потом добавить 3
б) создать с одним и добавить 2.
Поскольку в вашем примере есть только "добавить в начало", первый в списке должен добавляться последним.
Хотя правильнее написать функцию "добавить в конец", т.к. без нее фактически получается не список, а стек.
И уж совсем круто - "добавить по индексу" (первым - индекс=0, последним - индекс=size()) и/или "добавить перед указанным".
Еще можно (но не обязательно) добавить счетчик числа элементов списка. Тогда функция size() просто будет возвращать его значение, а иначе ей придется пробегать по всему списку (впрочем, для учебных задач это допустимо).
Неясно, что означает int get_nth(int) - получить индекс по val или получить val по индексу или что-то еще.

Про списки на форуме много тем (а в интернете - вообще уйма), вот к примеру:Создать односвязный список из структур и вот Односвязный список объектов
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2016, 12:01
Помогаю со студенческими работами здесь

Написать конструктор для пользовательского класса "Двусвязный список"
Попытался построить двусвязный список. Как написать этот конструктор ? Может быть правильно будет...

Реализовать односвязный список для хранения и операций с данными вида "Количество внешних связей"
Реализовать односвязный список для хранения и операций с данными вида: Объект Количество внешних...

Реализовать односвязный список данных вида "Страна, город, количество населения"
Поставлена задача реализовать односвязный список данных вида Страна город количество населения...

Реализовать перегрузку заданных операторов для пользовательского класса комплексных чисел
Нужно добавить операторы перегрузки для комплексных чисел, но я что-то вообще не догоняю как это...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru